2

私はコンパイルの主題に不慣れで、ボトムアップ解析の演習を開始したばかりです。

私は次の問題に固執しました。

次の文法の LR(0) 解析テーブルを作成します。

1) E –> E + T
2) E –> T
3) T –> (E)
4) T –> id


I0 :

   E' –> .E
   E –> .E + T
   E –> .T
   T –> .(E)
   T –> .id

E では、DFA の次の状態は次のようになります。

 I1:

    E' -> E.
    E  -> E. + T

私がこれまでに学んだことから、これは SR 競合ではありませんか? 先読み変数がないため、パーサーは削減またはシフトするかどうかわからないためですか? これは LR(0) 文法であってはなりませんか?

しかし、私が読んでいるPDFはLR(0)テーブルを構築しています。PDFに間違いがありますか、それとも概念を理解する場所で間違っていますか?

4

2 に答える 2

3

で文法を拡張しましたE' -> E。通常、E' -> E $$ は (終端) 記号であり、文法では他の方法では発生せず、入力の終わりを示します。

したがって、I1は実際には


E' -> E. $
E  -> E. + T

そして衝突はありません。(そして、文法LR(0) だと思います。)

于 2014-02-26T08:28:38.513 に答える