当我运行输入
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)*
;
我从输入的字符中得到不匹配的令牌异常3
,预期\u000F
。当我从输入中删除行时integer x;
,一切正常。知道这\u000F
意味着什么以及为什么会这样吗?
我尝试重写每条规则,没有任何帮助。
IDENT 只能是字母,INTEGER 只能是数字。表达式是整数和它们之间的“+”或“-”。
谢谢。