質問

次の文法の左再帰を削除する方法

E := EE+|EE-|id

一般的な手順の使用:

A := Aa|b

に翻訳する:

A := b|A'
A' := ϵ| Aa 

取得した元の文法にこれを適用する:

A = E, a = (E+|E-) and b = id

したがって:

E := id|E'
E' := ϵ|E(E+|E-)

しかし、この文法は間違っているようです

ϵE+ -> ϵ id +

有効になる しかし、それは間違った後置表現です。

役に立ちましたか?

解決

あなたの“一般的な手順”間違って引用されています。ドラゴンブックからそれを取ります:

A := Aα | β

なる

A  := βA′
A′ := αA′ | ϵ

…結果:

E  := id E′
E′ := (E + | E -) E′ | ϵ
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top