Antlr Java.g:不明确';报表';规则?(断言)
在中,我们可以找到以下规则(为了清晰起见,删除了空格): 我有两个问题:Antlr Java.g:不明确';报表';规则?(断言),antlr,antlr3,Antlr,Antlr3,在中,我们可以找到以下规则(为了清晰起见,删除了空格): 我有两个问题: 是否真的需要两个“断言”子规则 如果不是,为什么ANTLR不抱怨歧义,因为它们似乎定义了完全相同的输入 提前谢谢 Pedro F.写道: 是否真的需要两个“断言”子规则 不,它们是相等的。但是,通过查看语法的格式: statement : block | ('assert' ) expression (':' expression)? ';' | 'a
statement
: block
| ('assert'
)
expression (':' expression)? ';'
| 'assert' expression (':' expression)? ';'
| ...
我(通过查看空格)怀疑语法中最初嵌入了代码:
statement
: block { /* embedded code */
}
| ('assert' { /* embedded code */ }
)
expression (':' expression)? ';'
| 'assert' expression (':' expression)? ';'
| ...
而且可能会有更多的规则/标记被删除(当然都是猜测!)
Pedro F.写道:
如果不是,为什么ANTLR不抱怨歧义,因为它们似乎定义了完全相同的输入
因为启用了全局回溯(选项中的backtrack=true;
)
Pedro F.写道:
是否真的需要两个“断言”子规则
不,它们是相等的。但是,通过查看语法的格式:
statement
: block
| ('assert'
)
expression (':' expression)? ';'
| 'assert' expression (':' expression)? ';'
| ...
我(通过查看空格)怀疑语法中最初嵌入了代码:
statement
: block { /* embedded code */
}
| ('assert' { /* embedded code */ }
)
expression (':' expression)? ';'
| 'assert' expression (':' expression)? ';'
| ...
而且可能会有更多的规则/标记被删除(当然都是猜测!)
Pedro F.写道:
如果不是,为什么ANTLR不抱怨歧义,因为它们似乎定义了完全相同的输入
因为启用了全局回溯(选项中的backtrack=true;
)