我正在尝试使用 Menhir 中的
--interpret
标志来调试我的解析器,并且我已将我的 .mly
文件分成标记和语法,如下所示:
.
├── dune
├── lexer.mll
├── parser.mly
├── syntax.ml
└── tokens.mly
使用此命令时:
menhir ./tokens.mly --base ./parser.mly
我得到了这个:
Error: no start symbol has been declared.
但是,开始符号在我的
parser.mly
中定义为%start <item> item
。
如果我随后为
--only-tokens
添加 tokens.mly
标志(例如 menhir --only-tokens ./tokens.mly --base ./parser.mly
),错误将不会显示,但 Menhir 将立即退出。
那么我应该如何正确使用 Menhir 解释多个文件?
看到这个帖子后,我解决了这个问题:
menhir tokens.mly --only-tokens
menhir parser.mly tokens.mly --external-tokens Tokens --base parser --interpret