我正在尝试在 JavaCC 中制定以下生产规则,但出现选择冲突错误。我知道如何使用前瞻来修复它,但我的印象是我们不允许将它用于我们的任务。
void statement() #void:{}
{
<ID> (<ASSIGN>(expression() | <STRING> ))| <LEFTBRACKET>argument_list()<RIGHTBRACKET>
| <NOT>expression()
| <QUESTIONMARK><ID>
| <LEFTBRACE>(statement()<SEMICOLON>)*<RIGHTBRACE>
| <IF>condition()<THEN>statement() <-- Conflict, parser will always pick this one
| <IF>condition()<THEN>statement()<ELSE>statement() <--
| <WHILE>condition()<DO>statement()
| {}
}
任何想法表示赞赏!