You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用Menhir的--interpret调试多文件解析器?

解决Menhir多文件下--interpret调试的问题

错误原因分析

  • 你之前把tokens.mly作为主文件传入命令,而它仅包含令牌定义,没有语法规则和起始符号,因此Menhir报错找不到起始符号。
  • 添加--only-tokens后,Menhir仅处理令牌定义,不会加载parser.mly中的语法逻辑,所以直接退出,无法进入调试模式。

正确操作方式

Menhir的--interpret需要以包含起始符号和语法规则的parser.mly作为主文件,同时加载tokens.mly的令牌定义,有两种可行方式:

方式一:在语法文件中引入令牌定义

在parser.mly的开头添加如下语句,直接引入令牌文件的内容:

%include "tokens.mly"

然后执行调试命令:

menhir --interpret parser.mly

方式二:命令行同时传入两个文件

直接将parser.mly(主文件)和tokens.mly(依赖令牌文件)一起传给Menhir:

menhir --interpret parser.mly tokens.mly

注意事项

  • tokens.mly应只包含令牌声明(%token、优先级/结合性声明如%left),不要添加语法规则或%start声明。
  • parser.mly保留原有的%start <item> item起始符号声明和完整语法规则即可,无需重复定义令牌。

内容的提问来源于stack exchange,提问作者ttzytt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:42:34