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()
| {}
}
どんな考えでも大歓迎です!