
antlr语法报错分析及解决
问题:使用antlr实现加减乘除运算时,语法一直报错。
原因:
未能定义 int 规则。
解决方法:
添加以下代码来定义 int 规则:
fragment digits
: [0-9] ([0-9_]* [0-9])?
;
int: ('0' | [1-9] (digits? | '_'+ digits));完整语法:
grammar Expr;
fragment Digits
: [0-9] ([0-9_]* [0-9])?
;
INT: ('0' | [1-9] (Digits? | '_'+ Digits));
prog: expr EOF;
expr: expr('*'|'/') expr #MultiOrDiv
| expr('+'|'-') expr #AddOrSub
| INT #Lieteral
| '(' expr ')' #Single
;
NEWLINE : [\r\n]+ -youjiankuohaophpcn skip;运行后,语法不应再报错。










