使用ocamlbuild时生成Menhir的dump / explain文件

我发现Menhir提供了--dump和--explain选项,它有助于调试很多。 但是,如何在ocamlbuild下启用这些选项,以便Menhir在编译时始终生成转储文件?

我试图编写处理自定义标签menhir_dump myocamlbuild文件,如下所示:

... 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...

有什么建议么?


我自己回答。

当然,这是一个内置的ocamlbuild选项。 只需在下面的_tags加上explain _tags

true: use_menhir, explain

您可以使用ocamlbuild -documentation来查找内置选项。

链接地址: http://www.djcxy.com/p/26037.html

上一篇: Generate dump/explain files of Menhir when using ocamlbuild

下一篇: The template disambiguator for dependent names