Front end (part 5) Now we fill in the quasiquotations for the makefile_item parser: makefile_item: [ [ EOL -> None | s = WORD; "="; ws = words; EOL -> Some (s, <:expr< $ws$ >>, ASSIGN) | t = WORD; ":"; ws = words; EOL; a = actions -> let ex = <:expr< let targ = $str:t$ in let dep_names = $ws$ in let deps = List.map resolve dep_names in let actions = $a$ in Mk.Rule (targ, deps, actions) >> in Some (t, ex, RULE) ] ]; actions: [ [ az = LIST0 action -> (mk_list az loc) ] ]; action: [ [ TAB; ws = words; EOL -> <:expr< String.concat " " $ws$ >> ] ]; words: [ [ ws = LIST0 word -> (let ls = mk_list ws loc in <:expr< List.flatten $ls$ >>) ] ];