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

使用syntax-cli解析简单表达式遇Token错误,求助排查

问题排查与解决

问题根源

你的BNF语法存在大小写不匹配的错误,导致解析器无法建立从起始符号E到NUMBER的合法推导路径:

  • 在E的产生式中,你使用了小写的t,但定义的非终结符是大写的T,小写t并未被定义,解析器无法识别该符号
  • 输入2时,解析器生成NUMBER token后,无法通过F→NUMBER→T→F→E→T的合法路径匹配起始符号E,因此抛出"Unexpected token"错误

修正后的letter.bnf

%lex

%%

\s+     /* do nothing */
\d+     return 'NUMBER'

/lex

%%

E
    : E '+' T
    | T
    ;

T
    : T '*' F
    | F
    ;
F
    : NUMBER
    ;

验证操作

执行原命令即可正常解析输入:

syntax-cli --grammar letter.bnf --mode LALR1 --parse '2'

该修正同时支持解析更复杂的算术表达式(如2+3*4),符合LALR(1)解析的语法规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:15:12