問題タブ [ml-yacc]
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.
compiler-construction - リデュース/リデュース コンフリクトの削除
ML-Yacc で定義されているように、次の文法を持つ言語用のコンパイラを作成しました (開始記号は、下部に定義されている「プログラム」です)。
この文法は問題ありませんが、ここでパラメトリック ポリモーフィズムを導入したいので、次の生成を文法に追加します。
そして今、次の2つの削減/削減の競合が発生していますが、解決方法がわかりません
これら2つの競合をどのように削除するか教えてもらえますか?
編集: これは mlyacc http://pastebin.com/2w26ytuVからの完全な .desc 出力です。これも 2 つの無害なシフト/リデュース エラーを示しているわけではありません
yacc - EXP -> EXP BINOP EXP を含む 12 の shift/reduce 競合に関する ML-Yacc エラー
これはエラーです:
これは文法です:
これを解決するにはどうすればよいですか?文法を再考し、この文法を説明する別の方法を見つける必要がありますか?
次のような優先順位も宣言しようとしました(ただし、これらを使用した経験はほとんどありません)。
しかし、何もありません。