我发现Menhir提供了转储和解释选项,这对调试非常有帮助。但是,如何在ocamlbuild下启用这些选项,以便Menhir总是在编译时生成转储文件?
我试图编写myocamlbuild文件,处理自定义标记menhir_dump,如下所示:
... snip ...
(* OASIS_STOP *)
Ocamlbuild_plugin.dispatch (
MyOCamlbuildBase.dispatch_combine [
(function
| After_rules ->
flag ["menhir_dump"] (S [A "--dump"; A "--explain"])
| _ -> ()
);
dispatch_default
]
)但是当它编译时,这些选项被插入到子命令中,并且编译在ocamlc阶段失败。
menhir --dump --explain --raw-depend --ocamldep 'ocamlfind ocamldep -modules' src/parser.mly > src/parser.mly.depends
menhir --ocamlc 'ocamlfind ocamlc -g -annot -bin-annot --dump --explain -I src -package cmdliner -package menhirLib -I src' --dump --explain --infer src/parser.mly
+ menhir --ocamlc 'ocamlfind ocamlc -g -annot -bin-annot --dump --explain -I src -package cmdliner -package menhirLib -I src' --dump --explain --infer src/parser.mly
^^^^^^^^^^^^^^^^
ocamlc: unknown option '--dump'.
...snip...有什么建议吗?
发布于 2015-05-27 05:07:20
我自己接。
当然,这有一个内置的ocamlbuild选项。只需将explain放在_tags中,如下所示。
true: use_menhir, explain您可以使用ocamlbuild -documentation查找内置选项。
https://stackoverflow.com/questions/30011551
复制相似问题