yacc.lua 657 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. definerule("yacc",
  2. {
  3. srcs = { type="targets" },
  4. commands = {
  5. type="strings",
  6. default={
  7. "yacc -t -b %{dir}/y -d %{ins}"
  8. }
  9. },
  10. },
  11. function (e)
  12. return normalrule {
  13. name = e.name,
  14. cwd = e.cwd,
  15. ins = e.srcs,
  16. outleaves = { "y.tab.c", "y.tab.h" },
  17. label = e.label,
  18. commands = e.commands,
  19. }
  20. end
  21. )
  22. definerule("flex",
  23. {
  24. srcs = { type="targets" },
  25. commands = {
  26. type="strings",
  27. default={
  28. "flex -s -t %{ins} > %{outs[1]}"
  29. }
  30. }
  31. },
  32. function (e)
  33. return normalrule {
  34. name = e.name,
  35. cwd = e.cwd,
  36. ins = e.srcs,
  37. outleaves = { "lex.yy.c" },
  38. label = e.label,
  39. commands = e.commands
  40. }
  41. end
  42. )