これはドラゴンブックからの質問です。これは文法です:
質問では、それがLL(1)であってSLR(1)ではないことをどのように示すかを尋ねます。
それがLL(1)であることを証明するために、構文解析テーブルを作成してみましたが、セル内で複数のプロダクションを取得していますが、これは矛盾しています。
このLL(1)の状態と、それを証明する方法を教えてください。
これはドラゴンブックからの質問です。これは文法です:
質問では、それがLL(1)であってSLR(1)ではないことをどのように示すかを尋ねます。
それがLL(1)であることを証明するために、構文解析テーブルを作成してみましたが、セル内で複数のプロダクションを取得していますが、これは矛盾しています。
このLL(1)の状態と、それを証明する方法を教えてください。
回答:
まず、作品に番号を付けましょう。
1 2 S → B B B 3 A → ε 4 B → ε
最初のセットを計算し、最初にセットを追跡しましょう。これらのような小さな例では、これらのセットについて直感を使用するだけで十分です。
次に、テーブルを計算します。定義により、衝突が発生しない場合、文法はL L (1 )です。
a | b |
-----------
S | 1 | 2 |
A | 3 | 3 |
B | 4 | 4 |
競合がないため、文法はです。
今の表。まず、L R (0 )オートマトン。
a | b | A | B |
---------------------------
0 | R3/R4 | R3/R4 | 1 | 5 |
1 | S2 | | | |
2 | R3 | R3 | 3 | |
3 | | S4 | | |
4 | R1 | R1 | | |
5 | | S4 | | |
6 | R4 | R4 | | 7 |
7 | S8 | | | |
8 | R2 | R2 | | |
質問されない場合は、LL(1)文法であることを証明するためにLL(1)テーブルを作成する必要はありません。Alexが行ったように、FIRST / FOLLOWセットを計算するだけです。
そして、定義により、LL(1)文法は次のようにする必要があります。
したがって、指定された文法について:
SLR(1)の分析は完璧だと思います!