Hello! 欢迎来到小浪资源网!


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


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     ; NEWLINE : [  ]+ -> skip;

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

相关阅读