0
我總是收到MissingTokenException
,NullPointerException
,如果我沒記錯的話NoViableAlterativeException
。 ANTLRWorks的日誌文件/控制檯輸出對我來說不夠有幫助。ANTLR重寫聲明的問題(簡單?)
我後是一個改寫如下所示:
(expression | FLOAT) '(' -> (expression | FLOAT) '*('
這裏下面是我的語法的樣本,我搶走了創建一個測試文件。
grammar Test;
expression
: //FLOAT '(' -> (FLOAT '*(')+
| add EOF!
;
term
:
| '(' add ')'
| FLOAT
| IMULT
;
IMULT
: (add ('(' add)*) -> (add ('*' add)*)
;
negation
: '-'* term
;
unary
: ('+' | '-')* negation
;
mult
: unary (('*' | '/') unary)*
;
add
: mult (('+' | '-') mult)*
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
FLOAT
: ('0'..'9')+ '.' ('0'..'9')*// EXPONENT?
| '.' ('0'..'9')+ //EXPONENT?
| ('0'..'9')+ //EXPONENT
;
WS : (' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
我也試過:
imult
: FLOAT '(' -> FLOAT '*('
;
這:
IMULT/imult
: expression '(' -> expression '*'
;
以及無數其它版本(黑客),我已經記不清。
任何人都可以幫我解決這個問題嗎?