5

私は3つの文法を持っています:

A -> aB | b | CBB

B -> aB | バ | バ | aBb

C -> aaA | b | タクシー

「各非終端記号の各 RHS の最初のセットを示して、ペアごとに素なテストを実行することにより、[それらが] LL 文法であるかどうかを判断する必要があります。

これは私がこれまでに持っているものです...

A -> aB | b | CBB

最初(aB) = a

最初の(b) = b

最初(CBB) = aaA = a

これは私が問題を抱えているものです。CBBを正しく行いましたか?もしそうなら、それらは交差し、ルールはテストに失敗します。(右?)

B -> aB | バ | バ | aBb

最初(aB) = a

最初の (ba) = b

最初(aBb) = a

それらは交差しているため、ルールはテストに失敗します。

C -> aaA | b | タクシー

最初 (aaA) = a

最初の(b) = b

最初(caB) = c

それらは交差していないため、ルールはパスします

4

2 に答える 2

7

テストのポイントは、最初の端末を見て、使用するルールを判断できるかどうかを確認することです (LL の要件)。ターミナル a に適用できる 2 つのルールがあることは、B にとって明らかです。また、Cの各ルールが異なる端末で始まることも明らかです。また、C (したがって CBB) の可能性のある最初のターミナルは、A の他のルールと重複していることがわかります。

結論: 良さそうです (ただし、CBB の 1 つのターミナルに立ち寄ってたまたま c を選択した場合は、間違った結論に達していたでしょう)。

于 2012-01-29T20:25:40.853 に答える