問題タブ [reduce-reduce-conflict]
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.
bison - バイソンは競合を減らす/減らす
私は次の文法を書きました:
現在、bison は 8 つの reduce/reduce 競合を発見しました。行を削除すると
ありません。優先順位と連想プロパティは明確に定義されていると思います。誰かが競合を解決する方法を教えてもらえますか?
parsing - reduce-reduce 競合の例を見つける
多くの質問がreduce-reduceの競合を解決するのに役立つよう求めていますが、私はそれらのどれも持っていないので、実際にいくつかを見つけるためにあなたの助けを求めています.
LR(1) パーサーの競合に関するドキュメントと演習を書いています。操作の順序やダングリング else 競合など、いくつかの興味深い shift-reduce 競合を見つけることができましたが、微妙であり、可能な限り少ないルールで発生する reduce-reduce 競合の例を見つけることはできませんでした。
変更として、解決策ではなく問題を見つけるのを手伝ってもらえますか?
bison - Bison シフト/リデュースおよびリデュース/リデュース コンフリクト
OK、私はこの Bison 文法を 3 回書き直そうとしましたが、shift/reduce および reduce/reduce の競合が発生し続けています。解析しようとしている構文は次のとおりです。{...} 内の項目は、どちらか一方のためのものです。[...] 内の項目はオプションです。
最後の 3 つをすべて機能させるのに問題があります。それらのいずれかを機能させることはできますが、4 つすべてを機能させることはできません。現在、1 つのシフト/リデュースと 1 つのリデュース/リデュースの競合があります。私が持っている文法は次のとおりです。
名前は自己文書化されていると思います(少なくともタイプを理解できるはずです)。どんな助けでも大歓迎です。単純化しすぎているか、不十分であると感じています。
注: 投稿を編集する方法を見つけて、オプションを削除し、SDL_K_COMMA と SDL_K_SEMI をそれぞれ ',' と ';' に変更しました。
ありがとう。
解析する必要があるいくつかの例を次に示します。
これが役立つことを願っています。
ところで:これはこれのためのEBNF(一種)です:
それくらいだと思います。
parsing - バイソンはnull可能な非端末間の競合を削減/削減しますか?
私はBisonを使用しています(AFAIKはLL(1)
デフォルトで解析を使用しています)。
私の文法は次のように言っています。
現在、との両方が null 可能であるため (パラメーターがゼロの場合)、競合をbison
警告します。reduce/reduce
params
arguments
function()
私の質問は、この競合を (抑制するのではなく) どうすれば削除できますか?
誰かが別の解析手法を使用することを提案しましたが、それが可能である場合 (そうするべきである)、または単に無視する必要があるかどうかを明確にしたいと思います。