我寫這個語法(* .g4):定義在ANTLR V4爲雙類型的規則
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()
我假設在我的expr規則中可能會有一些不明確的地方。
我在做什麼錯?
提示:6.1正在工作。但不是6也是雙倍(6.0)? – user1511417