問題タブ [left-recursion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
left-recursion - 左再帰の削除の問題
だから私はこの左再帰文法を持っています
そのままでは左再帰なので、別のステップを追加して左再帰を排除しました。
しかし、それをたどると、 の最初のセットE
はまだ で始まるので、間違って削除したのではないかと思いE
ます。私は正しいですか?または、何か不足していますか?この質問は、参考までに、より大きな文法セットの一部です。
left-recursion - 特定の文法の左再帰を排除する
私は百万の例/チュートリアルを調べましたが、この文法の左再帰を排除することはまだできません:
何か案は?
antlr - ANTLR4 相互左再帰
ANTLR 4.2.2 で奇妙な問題に遭遇しました。
(簡略化された) Java 文法を考えてみましょう。これはコンパイルされません:
ANTLR は次のエラーを出力します。
はい、左再帰も見られます。しかし、相互左再帰は見られず、通常の再帰のみが見られます。
の周りのかっこを削除すると、(classOrInterfaceType)
正常にコンパイルされます。もちろん、括弧は不要ですが、文法は自動的に生成され、コード ジェネレーターは状況によっては常に括弧を挿入します。では、ここで何が問題なのですか?
antlr - ANTLRでパーサーを構築しようとしている左再帰を解決しようとしています
私は現在、Antlr と Eclipse を使用して Oberon 言語のパーサーを構築しようとしています。
これは私がこれまでに得たものです:
私の問題は、文法をチェックすると、次のエラーが表示され、これを修正する適切な方法が見つからないことです。
また、declarationsequence と simpleexpression にも問題があります。
私がそれを使用するoptions { … backtrack = true; … }
と、少なくともコンパイルされますが、テストファイルを実行すると明らかに正しく動作しなくなりますが、自分で左再帰を解決する方法が見つかりません (または、盲目すぎるかもしれません)あまりにも長い間これを見てきたため、現時点では)。エラーが発生した行を変更して機能させる方法はありますか?
編集
3つの間違いのうちの1つを修正できました。statement
今すぐ動作します。問題はそれでassignment
、procedurecall
両方ともdesignator
.
parsing - e端子だけで左再帰をなくす
文法がある場合:
ここで、e はイプシロン (空の文字列) です。この文法から左再帰を排除する方法はありますか?
antlr - 相互に左再帰?
私は ANTLR の文法のパーサーに取り組んでいます。現在、() が最も優先順位が高く、次に単項マイナスなどの式に取り組んでいます。
行を追加すると、ANTLR でエラーが発生します。次のルール セットは相互に左再帰的です [add、mul、unary、not、および、expr、paren、accessMem、relation、または、assign、equal] どうすればよいですかこの問題を解決しますか?前もって感謝します。
python - PyParsing で関数呼び出しをパースする
私は単純な言語を解析しようとしています。問題は、関数呼び出しの解析に伴います。関数呼び出しが式であり、その後に左括弧、引数リスト、および右括弧が続くことを伝えようとしています。私はこのようなものを持っています:
問題は明らかですexpr
。左再帰です。しかし、これを解決するために何をすべきかわかりません。私は右再帰スタイルの文法 (別名 PLY、Yacc など) の経験がありますが、まだ左再帰文法を理解しようとしています。
parsing - 文法を変更してANTLR4の左再帰エラーを削除するには?
私は言語を解析しようとしています。次の ANTLR4 パーサー ルールは、言語仕様から直接コピーされます。
しかし、antlr はエラーを報告します: 次のルール セットは相互に左再帰的です 文法を変更する方法がわかりません。誰かが助けてくれることを願っています。ありがとう。