使用 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
这两个选项都应该说明为什么“嗨”。是语法错误,你的语法比较清楚。
我正在实现一种小型编程语言。这里是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
这两个选项都应该说明为什么“嗨”。是语法错误,你的语法比较清楚。