Semantic Model (part 1) Our next step will be to build a semantic model of the contents of a Makefile. A collection of variables Each var, a list of strings doggies = dingo.o poodle.o Or variable references animals = llama.o $(doggies) loris.o Referenced varialbes flatten = llama.o dingo.o poodle.o loris.o A dependency tree Each node has a target and some dependencies thezoo: $(animals) $(food) tourism.h And an action to remake it gcc -o $@ $(animals) $(food) An action is a list of shell commands which are just nested string lists, as with variables