1

http://hackingoff.com/compilers/ll-1-parser-generatorで次の文法を使用しています。

E ->  T E'
E' ->  + T E' 
E' -> EPSILON
T ->  F T'
T' -> * F T'
T' -> EPSILON 
F -> ( E ) 
F ->  id

出力解析テーブルは

[
        [0, "+", "*", "(", ")", "id", "$"],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 10, 10, 1, 9, 1, 9],
        [0, 2, 10, 10, 3, 10, 3],
        [0, 9, 10, 4, 9, 4, 9],
        [0, 6, 5, 10, 6, 10, 6],
        [0, 9, 9, 7, 9, 8, 9]
]

誰かが解析テーブルを説明できますか? 特に、プロダクションルールが8行しかないことを考えると、 9andの意味は何ですか10

4

1 に答える 1

1

表のすぐ上にあるページ自体で説明されています。

端末が非端末の予測セットに存在しない場合、エラー コードがテーブルに配置されます。その端末がfollow(その非端末)にある場合、エラーはPOPエラーです。それ以外の場合は、SCAN エラーです。

POP エラー コード = 予測テーブル プロダクションの数 + 1

SCAN エラー コード = 予測テーブル生成数 + 2

したがって、8 つの生成規則を持つ文法の場合、値 9 と 10 はそれぞれPOP errorSCAN errorです。

于 2015-02-04T16:23:07.870 に答える