問題タブ [shift-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.
parsing - 三項式(a?b:c)と「多分」式(a?)の間のLR(1)文法のあいまいさを解決する方法は?
私は文法を作成しました。その簡略版を以下に再現します。
この言語は明確であり、LR解析可能である必要があると思います。(私が間違っている場合は私に知らせてください!)
ただし、この文法のLR(1)パーサーを生成しようとすると、シフト/リデュースの競合が発生します。パーサーがexp3
先読み?
で表示すると、シフトするかリデュースするかがわからないためです。
この言語をLR(1)解析可能(競合なし)にするための合理的な方法はありますか?
それとも、GLR(またはおそらくLR(2)?)は、このような言語の唯一の現実的なオプションですか?
(または、そもそも言語が明確であると信じるのは間違っていますか?)
参考までに、私が生成したあいまいなステートマシンは次のとおりです(♦はEOFです)。
parsing - 小さな言語パーサーの Bison Shift/Reduce conflicts
私の目的は、小さな言語のパーサーを作成することです。現在、1 つのシフト/リデュース エラーが発生しています。
私のCFGはどこかがあいまいですが、どこにあるのかわかりません
parsing - この Shift/Reduce エラーについて Irony は何を教えてくれますか?
ここで説明されている文法を使用して、PowerShell 言語のパーサーを作成しています: http://www.microsoft.com/en-us/download/details.aspx?id=9706。
私は Irony を使用しましたが、Irony Grammar Explorer はシフト/リデュースおよびリデュース/リデュース エラーを報告しています。何を言っているのかわからないので、これは私を困惑させます。
自分自身を見たい場合、コードはこちら: https://github.com/Pash-Project/Pash/tree/method-invocation/Source/Pash.System.Management
編集:これが混乱する入力は次のとおりだと思います:
これは追加ですか、それともキャストですか?
bison - この Bison コードのシフト/リデュースの競合はどこにありますか?
バイソンコードにシット/リデュースの競合があります:
私はそれを書くことができます:
しかし、ノード構造を大幅に変更する必要があります。したがって、私はそれを解決する新しい方法を探しています。手伝って頂けますか ?
良い一日を過ごしてください !
parsing - このシフト/リデュースの競合は Bison のどこから来ているのでしょうか?
Jison (javascript パーサー) で非常に単純な言語を定義することによって、解析のコツをつかもうとしています。バイソンと同じ/非常によく似た構文を受け入れます。
これが私の文法です:
シフト/削減の競合が 1 つ発生しています。ジソンの出力は次のとおりです。
parsing - Happy の命題論理パーサーでの Shift/Reduce 競合
私は、この命題論理文法のBNF 定義に基づいて、Happy で簡単な命題論理パーサーを作成しています。これが私のコードです。
さて、ここで2つの問題があります
- 何らかの理由で、4 つのシフト/リデュースの競合が発生します。優先順位によって解決されると思っていたので、競合がどこにあるかはわかりません (BNF 文法に正しく従ったと思います)...
- (これはどちらかというと Haskell の問題です) 私のレクサー関数では、何らかの理由で、'¬' をどうするかを記述している行で解析エラーが発生します。その行を削除すると機能します。(この問題は解決済みです)
どんな助けでも素晴らしいでしょう。
parsing - カップパーサーでのシフト/削減の競合 (配列と行列を使用した文法)
フィールドとして配列と行列を持つクラスをサポートするはずの小さな言語用のカップパーサーを書いています。たとえば、クラス インスタンスがある場合:
フィールドには次の方法でアクセスします。
shift/reduce のコンフリクトが頻繁に発生するため、この最後の部分の作品を書くのに苦労しています。これは私の作品です:
警告 : *シンボル LSQUARE の下のデジネータ ::= デジネータ LSQUARE Expr RSQUARE ( ) とデジネータ ::= デジネータ LSQUARE Expr RSQUARE ( ) LSQUARE Expr RSQUARE の間の状態 #189 で見つかった Shift/Reduce の競合 シフトを支持して解決されました。
誰でもこれを解決するのを手伝ってもらえますか?
compiler-construction - GnuWin32 Bison の Shift/Reduce 警告を解決しますか?
私は次のルールを持っており、バイソンでそれらを実装すると、5つのシフト/削減警告が表示されます。
規則の一部は次のとおりです。
この状態でParser.output
警告が表示されます。
**state 25**
誰かがこれを解決する方法を教えてくれますか、私は多くの記事を読みましたが、何が問題なのか理解できませんでした。すべての人に感謝します... :)
bison - Bison: shift/reduce エラーを修正しました。
そのため、文法で恐ろしいシフト/削減エラーが発生していました。最小限のテスト ケースを次に示します。
しかし、実験を通して、私はどうにかして問題を解決することができました:
そもそもシフト/リデュースエラーが発生した理由と、これが機能した理由を誰かが説明できますか? これも適切な解決策ですか?そうでない場合、何ですか?