ANTLR加减乘除运算语法报错:如何定义INT规则解决问题?

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
    ;
NEW

LINE : [\r\n]+ -youjiankuohaophpcn skip;

运行后,语法不应再报错。