【发布时间】:2015-10-23 10:21:28
【问题描述】:
我写了这个语法(*.g4):
ID : [a-zA-Z]+;
INT : [0-9];
DBL : INT+ (PT INT+)?;
PT : '.';
...
prog: stat+;
stat: expr NEWLINE # printExpr
| ID EQL expr NEWLINE # assign
| 'clear' # clear
| NEWLINE # blank
;
expr: expr op=(MUL|DIV) expr # MulDiv
| expr op=(ADD|SUB) expr # AddSub
| DBL # double
| ID # id
| LBR expr RBR # parens
;
我的 ANTLR 和 Java 文件编译没有问题,但是如果我运行这个输入:
193.2
a =5.2
b= 6
c= a+b*2.2
c
b= 6 存在问题第 3:3 行在输入“6”处没有可行的替代方案
然后是nullPointerException 上的visit()。
我认为我的 expr 规则中可能存在一些歧义。
我做错了什么?
【问题讨论】:
-
提示:6.1 正在运行。但是 6 不也是双倍 (6.0) 吗?
标签: java metaprogramming antlr4