definerule("yacc", { srcs = { type="targets" }, commands = { type="strings", default={ "yacc -t -b %{dir}/y -d %{ins}" } }, }, function (e) return normalrule { name = e.name, cwd = e.cwd, ins = e.srcs, outleaves = { "y.tab.c", "y.tab.h" }, label = e.label, commands = e.commands, } end ) definerule("flex", { srcs = { type="targets" }, commands = { type="strings", default={ "flex -s -t %{ins} > %{outs[1]}" } } }, function (e) return normalrule { name = e.name, cwd = e.cwd, ins = e.srcs, outleaves = { "lex.yy.c" }, label = e.label, commands = e.commands } end )