我最近开始学习ANTLR。下面是算术表达式的语法。问题是,当我将(调用)表达式规则放入规则中时,term
即使对于(9+8),它也解析不正确。它以某种方式忽略了正确的括号。
当我放置add
规则而不是从规则术语中调用表达式规则时,它工作正常。
如:
term:
INTEGER
| '(' add ')'
;
谁能告诉我为什么会这样,因为它们或多或少都是一样的。
给出错误结果的语法
term
:
INTEGER
| '(' expression ')'
;
mult
:
term ('*' term)*
;
add
:
mult ('+' mult)*
;
expression
:
add
;