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

ANTLR4中使用-> skip跳过空白后,无空格表达式解析失败问题求助

ANTLR4中使用-> skip跳过空白后,无空格表达式解析失败问题求助

各位好,我碰到一个ANTLR4的解析问题,百思不得其解,想请教下大家:

我写的语法规则解析带空格的表达式"3 + 2 * 5"完全正常,但解析没有空格的"3 + 2*5"时就报错了,错误提示是:

"1:5 extraneous input '*5' expecting {, WS}"

我明明在规则里用WHITESPACE: [ \r\n\t]+ -> skip;跳过了空白字符,为什么有无空格会导致解析结果不一样呢?我用的是ANTLR 4.7.2版本,而且在lab.antlr.org上测试也会出现同样的问题。

附上我的语法代码:

grammar Expr;

top : expr EOF
    ;

expr
    : '(' expr ')'     # ParenExpr
    | left=expr op=('*' | '/') right=expr    # BinExpr
    | left=expr op=('+' | '-') right=expr    # BinExpr
    | atom     # Atom
    | f=expr '(' arg=expr ')'   # FunCallExpr
    ;

atom
    : IDENTIFIER | NUMBER | HEXINT
    ;

HEXINT: '0' 'x' [0-9a-fA-F]+
    ;

IDENTIFIER: [A-Za-z_][a-zA-Z0-9_]*
    ;


NUMBER
    : [0-9]*.[0-9]+ ('e' [-+]? [0-9]+)?
    | [0-9]+
    ;

WHITESPACE: [ \r\n\t]+ -> skip;

备注:内容来源于stack exchange,提问作者Matt DiMeo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:29:39