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
相关产品推荐
相关产品推荐

