Front end (part 4) Recall, we left a number of unfinished ... things in our parser. word: [ [ w = WORD -> ... | "$"; "^" -> ... | "$"; "<" -> ... | "$"; "@" -> ... | "$"; "("; w = WORD; ")" -> ... ] ]; We now fill these in with Ocaml quasiquotations. They come from our Ocaml model of Makefile semantics. Aren't you glad we worked that out in advance? word: [ [ w = WORD -> <:expr< [$str:w$] >> | "$"; "^" -> <:expr< dep_names >> | "$"; "<" -> <:expr< [List.hd dep_names] >> | "$"; "@" -> <:expr< [targ] >> | "$"; "("; w = WORD; ")" -> let w2 = tidy w in <:expr< ($lid:w2$ ()) >> ] ];