2017-11-06 6 views
-1

私が知る限り、左回帰はLRパーサーにとって問題ではありません。そして、曖昧な文法はどのような種類のパーサーでも解析できないことを知っています。次のようなあいまいな文法どのようにしてこの文法がSLR(1)かどうかを確認できるように、あいまいさを取り除くことができますか?コンパイラデザインの構文解析

E-> E + E | E-E |(E)| ID

そして、もう一つの問題は、文法はLL(1)またはSLR(1)であるかどうかを確認するために文法のために必要なファクタリングを残していますか? 助けていただければ幸いです。

答えて

0

あなたが遭遇する可能性が高いパーサージェネレータは、文法のあいまいさを簡単に処理できます。

あなたの文法は、シフト/縮小の競合を引き起こします。これらは必ずしも問題ではありません(reduce/reduce conflicts)。すべてのパーサジェネレータのシフト/リダクションの競合に対するデフォルトのアクションは、シフトすることです。これが問題を解決します。これを警告として無視するメカニズム(YACCまたはBisonのような)が通常あります。

演算子の優先順位を強制するために、複数のレベルの式を設定することで、文法の競合を削除できます。