0

我正在实现一种小型编程语言。这是代码库。该程序是用ocamlbuild. 我添加了一个使用menhir. 当我编译并运行程序时,我收到以下消息。

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

我正在尝试通过将 传递explain_tag文件来查找更多详细信息

true: color(always), explain

但似乎没有任何区别。如何menhir通过 ocamlbuild 生成日志文件?或其他调试方式?

4

1 回答 1

1

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

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

类似地,--explain标志 ofmenhir仅在生成解析器时对生成冲突解释有用。它不会在语法错误中添加语法错误解释。

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

menhir --interpret parser.mly

或使用 . 列出语法中所有可能的语法错误menhir --list-errors

menhir --list-errors parser.mly

这两个选项都应该成为“嗨”的原因。是你的语法中的语法错误比较清楚。

于 2021-12-29T09:36:38.910 回答