使用 menhir 和 ocamlbuild 调试代码

debugging code with menhir and ocamlbuild

我正在实现一种小型编程语言。这里是codebase。该程序是用 ocamlbuild 构建的。我使用 menhir 添加了一个解析器。当我编译并 运行 程序时,我收到以下消息。

❱ ./main.byte 
Fatal error: exception Parser.MenhirBasics.Error

我试图通过将 explain 传递给 _tag 文件来查找更多详细信息

true: color(always), explain

不过好像没什么区别。如何让 menhir 通过 ocamlbuild 生成日志文件?或者其他调试方式?

这是由 menhir 生成的解析器引发的语法错误。

您的构建系统无关紧要(尽管如此,您应该对新项目使用 dune 而不是 ocamlbuild)。

同样,menhir--explain标志仅在生成解析器时用于生成冲突解释。它没有为语法错误添加语法错误解释。

如果你想调试 menhir 语法,你可以使用 menhir 解释器模式 menhir --interpret

menhir --interpret parser.mly

或使用 menhir --list-errors.

列出语法中所有可能的语法错误
menhir --list-errors parser.mly

这两个选项都应该说明为什么“嗨”。是语法错误,你的语法比较清楚。