|
| 1 | +; Using user actions rather than (ocamllex) and (menhir) because the Makefile |
| 2 | +; runs ocamllex and menhir from this directory rather than the workspace root, |
| 3 | +; meaning the generated source is annotated with the bare filename. |
| 4 | + |
| 5 | +; These rules are disabled by default because you need precisely the correct |
| 6 | +; version of Menhir installed. Comment out (mode fallback) and uncomment (mode |
| 7 | +; promote) in each stanza if you make changes to the Flambda |
| 8 | +; parser. |
| 9 | + |
| 10 | +(rule |
| 11 | + (mode fallback) |
| 12 | + ;(mode promote) |
| 13 | + (target flambda_lex.ml) |
| 14 | + (deps flambda_lex.mll) |
| 15 | + (action (run ocamllex -q %{deps}))) |
| 16 | + |
| 17 | +(rule |
| 18 | + (mode fallback) |
| 19 | + ;(mode promote) |
| 20 | + (target flambda_parser.ml) |
| 21 | + (deps flambda_parser_in.ml) |
| 22 | + (action (with-stdin-from %{deps} |
| 23 | + (with-stdout-to %{target} |
| 24 | + (run sed "s/MenhirLib/CamlinternalMenhirLib/g"))))) |
| 25 | + |
| 26 | +(rule |
| 27 | + (mode fallback) |
| 28 | + ;(mode promote) |
| 29 | + (target flambda_parser.mli) |
| 30 | + (deps flambda_parser_in.mli) |
| 31 | + (action (with-stdin-from %{deps} |
| 32 | + (with-stdout-to %{target} |
| 33 | + (run sed "s/MenhirLib/CamlinternalMenhirLib/g"))))) |
| 34 | + |
| 35 | +(rule |
| 36 | + (targets flambda_parser_in.ml |
| 37 | + flambda_parser_in.mli) |
| 38 | + (deps flambda_parser.mly) |
| 39 | + (action (run menhir --table %{deps} --base flambda_parser_in))) |
| 40 | + |
| 41 | +; NOTE: flambda_parser.messages is massively out of date. No need to activate |
| 42 | +; this rule unless you've fixed it (thanks!). |
| 43 | +(rule |
| 44 | + (mode fallback) |
| 45 | + ;(mode promote) |
| 46 | + (target flambda_parser_messages.ml) |
| 47 | + (deps flambda_parser.messages flambda_parser.mly) |
| 48 | + (action (with-stdout-to %{target} |
| 49 | + (run menhir --compile-errors %{deps})))) |
| 50 | + |
| 51 | +(alias (name list-errors)) |
| 52 | + |
| 53 | +(rule |
| 54 | + (alias list-errors) |
| 55 | + (target flambda_parser.new-messages) |
| 56 | + (deps flambda_parser.mly) |
| 57 | + (mode promote) |
| 58 | + (action (with-stdout-to %{target} |
| 59 | + (run menhir --list-errors %{deps})))) |
| 60 | + |
| 61 | +(alias (name check-errors)) |
| 62 | + |
| 63 | +(rule |
| 64 | + (alias check-errors) |
| 65 | + (deps flambda_parser.mly |
| 66 | + flambda_parser.messages |
| 67 | + flambda_parser.new-messages) |
| 68 | + (action (run menhir flambda_parser.mly |
| 69 | + --compare-errors flambda_parser.messages |
| 70 | + --compare-errors flambda_parser.new-messages))) |
0 commit comments