私は ANTLR の文法のパーサーに取り組んでいます。現在、() が最も優先順位が高く、次に単項マイナスなどの式に取り組んでいます。
行を追加すると、ANTLR でエラーが発生します。次のルール セットは相互に左再帰的です [add、mul、unary、not、および、expr、paren、accessMem、relation、または、assign、equal] どうすればよいですかこの問題を解決しますか?前もって感謝します。
私は ANTLR の文法のパーサーに取り組んでいます。現在、() が最も優先順位が高く、次に単項マイナスなどの式に取り組んでいます。
行を追加すると、ANTLR でエラーが発生します。次のルール セットは相互に左再帰的です [add、mul、unary、not、および、expr、paren、accessMem、relation、または、assign、equal] どうすればよいですかこの問題を解決しますか?前もって感謝します。
最も簡単な答えは、3 ではなく antlr4 を使用することです。これは、即時左再帰に問題はありません。カバーの下にある文法を自動的に書き換えて、正しいことを行います。たくさんの例があります。たとえば、 Java の文法や、左再帰規則に関する私の小さなブログ エントリを調べることができます。v3 に行き詰まっている場合は、以前のバージョンの Java 文法があり、ドキュメントや書籍に算術式のルールを構築する方法に関する資料がたくさんあります。