Question

Comment éliminer la récursion gauche de la grammaire suivante?

E := EE+|EE-|id

En utilisant la procédure commune:

A := Aa|b

se traduit par:

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

En appliquant ceci à la grammaire originale, nous obtenons:

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

Par conséquent:

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

Mais cette grammaire semble incorrecte car

ϵE+ -> ϵ id +

serait valide mais c'est une expression postfixe incorrecte.

Était-ce utile?

La solution

Votre "procédure commune" est mal citée. Tirant du livre du dragon:

A := Aα | β

devient

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

… qui donne:

E  := id E′
E′ := (E + | E -) E′ | ϵ
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top