何がこれを本当に引き起こしているのかわかりません。ファイルをコンパイルしようとすると、「左再帰が式を検出しました... -> フラグメント... -> 式.
これを持つコードの領域はこのセクションです
void statement() : {}
{
identifier() <ASSIGN> expression()
| identifier() <ASSIGN> <STRING>
| <EMARK> expression()
| <QMARK> identifier()
| identifier(arg_list())
| <BEGIN>(statement() <SEMIC>)+ <END>
| <IF> condition() <THEN> statement()
| <IF> condition() <THEN> statement() <ELSE> statement()
| <WHILE> (condition()) <DO> statement()
| {}
}
void expression () : {}
{
fragment()((<PLUS_SIGN> | <MINUS_SIGN> | <MULT_SIGN> | <DIV_SIGN>) fragment())*
}
void fragment () : {}
{
identifier() | <NUM> | (<PLUS_SIGN> | <MINUS_SIGN>)fragment() | expression()
}
この問題を解決する方法がよくわかりません。助けていただければ幸いです。ありがとう!