,當我在我的語法運行輸入ANTLR,missmatched令牌例外,預計 u000F
integer function() :
2+2+2;
integer x;
3-1-2;
end.
:
evaluator
: type 'function' '(' ')' ':'
(expression ';' | declaration ';')*
'end' '.'
EOF
;
declaration
: type IDENT (':=' expression)? ';'
;
type
: 'integer'
| 'double'
| 'boolean'
| 'void'
;
term
: IDENT
| '(' expression ')'
| INTEGER
;
unary
: ('+' | '-')* term
;
mult
: unary (('*' | '/' | 'mod') unary)*
;
expression
: mult (('+' | '-') mult)*
;
我從輸入missmatched人品3
令牌例外,預計\u000F
。當我從輸入中刪除行integer x;
,一切工作正常。任何想法\u000F
意味着什麼以及爲什麼它是預期的?
我試着重寫每一條規則,沒有什麼幫助。
IDENT只能是字母,INTEGER只能是數字。表達式是整數,它們之間是「+」或「 - 」。
謝謝。
當您從語法中生成詞法分析器和分析器時,ANTLR會產生任何輸出嗎? –
是的,一切都按照它應該的匹配,直到輸入字符'3' –
我指的是在編譯'.g'文件到一個或多個'.java'文件之前的過程。 –