在Java.g中,我们可以找到以下规则(为清楚起见删除了空格):
statement
: block
| ('assert') expression (':' expression)? ';'
| 'assert' expression (':' expression)? ';'
| 'if' parExpression statement ('else' statement)?
(...)
;
我有两个问题:
- 真的需要两个“断言”子规则吗?
- 如果不是,为什么 ANTLR 不抱怨歧义,因为它们似乎定义了完全相同的输入?
提前致谢。