,当我在我的语法运行输入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'文件之前的过程。 –