有没有大佬懂antlr,这段简单的antlr为什么会报错?-灵析社区

瞳孔放大黑洞

![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241113/c72c79451b16d66c8ed67f61ac72814d.png) grammar Expr; prog: expr EOF; expr: expr('*'|'/') expr #MultiOrDiv | expr('+'|'-') expr #AddOrSub | INT #Lieteral | '(' expr ')' #Single ; NEWLINE : [\r\n]+ -> skip; 刚学antlr,最简单的这个antlr应该是实现加减乘除法,但是一直报语法错误 1:1 token recognition error at: '+' 1:3 token recognition error at: '*' 1:2 mismatched input '2' expecting {, '*', '/', '+', '-'} 有没有懂的大佬指教下!

阅读量:14

点赞量:0

问AI
原因 你的 "INT" 没有定义。 解决方法 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]+ -> skip; 结果 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241113/a675392f0b530907eeac276172e23792.png)