0

練習問題を解こうとしていたのですが、模範解答と自分の解答を比較しようとしたところ問題が発生しました。変換前の文法は次のとおりです。

E-> S*
S-> SD
S-> D
D-> [D]
D-> x

開始記号はEで、その他の非終端記号はSDです。

ここでの私の答えは次のとおりです。

E-> S*
S-> DS'
S'-> DS'
S'->
D-> [D]
D-> x

回答例では がなくS-> DS'、E が になりE-> DS'*ます。左再帰を削除するために本で使用されている方法により、

A -> Aa
A -> b

=>  A -> bA'
    A' -> aA'
    A' ->

があるはずS-> DS'です。私は今、これについて混乱しています。おそらく、この方法を理解していませんでした。誰かがこれについて何かヒントをくれますか? *また、ここにある星印の意味を教えてください。どうもありがとう!

4

1 に答える 1

0

あなたの答えに間違いはありません。回答例は、文法を変換して単純化しただけです。

E -> S*
S -> DS'

S'andのルールが与えられ、 andが他のプロダクションでは発生しないDと仮定するSと、文法のこの部分は次のようになります。E

E -> DS'*

最初のプロダクションのは、取り除かれた 2 番目のプロダクションで定義されているように、S単純に に置き換えられました。DS'

シンボルは*おそらくクリーネ星です。これは、S何回でも発生する可能性があることを意味します (ゼロを含む)。しかし、文脈がなければ、それを伝えるのは難しく、別の意味を持っている可能性もあります.

于 2016-05-11T12:52:31.090 に答える