Frage

Wie Linksrekursion für die folgende Grammatik beseitigen?

E := EE+|EE-|id

das gemeinsame Verfahren:

A := Aa|b

übersetzt:

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

Angewandt auf die ursprüngliche Grammatik erhalten wir:

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

Deshalb:

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

Aber diese Grammatik scheint falsch, da

ϵE+ -> ϵ id +

wäre gültig aber das ist ein falscher Ausdruck postfix.

War es hilfreich?

Lösung

Ihr „einheitliches Verfahren“ wird falsch zitiert. Taking es aus dem Drachenbuch:

A := Aα | β

wird

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

... was ergibt:

E  := id E′
E′ := (E + | E -) E′ | ϵ
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top