next up previous
Nächste Seite: Top-Down-Parser (von Hand) Aufwärts: Syntakt. Analyse (4. 12.) Vorherige Seite: Syntakt. Analyse (4. 12.)

Normalformen von CFG

Erreichbare und produktive Variablen

$ $Id: reduziert.tex,v 1.2 2003/12/03 11:51:10 joe Exp $ $

Für eine CFG $ G$ heißt die Variable $A$

Aufgabe: wie kann man entscheiden, ob diese Eigenschaften zutreffen (ohne alle Ableitungen aufzuzählen)?

Vergleiche mit gleichen Begriffen für Zustände von endlichen Automaten.

Reduzierte Grammatiken

Def: Die Grammatik $ G$ heißt reduziert,

wenn alle Variablen erreichbar und produktiv sind.

Satz: zu jeder CFG $ G$ gibt es eine reduzierte CGF $ G'$ mit $ L(G)=L(G')$.

Beweis: lösche in $ G$ zuerst alle nicht produktiven Variablen,

dann alle (im Rest) nicht erreichbaren Variablen

(jeweils mit allen Regeln, in denen sie vorkommen)

Aufgabe: warum gerade diese Reihenfolge?

Nullierbare Variablen

$ $Id: null.tex,v 1.2 2003/12/03 11:51:10 joe Exp $ $

Def: Eine Variable $A$ heißt nullierbar, falls $ A \to_R^* \epsilon$.

Die Menge der nullierbaren Variablen von $ G$

ist die kleinste Menge $ N \subseteq V$ mit:

Bemerkung: der erste Fall ist tatsächlich im zweiten enthalten.

Def: eine Regel $ A \to r$ heißt nullierbar, falls $ r\to_R^* \epsilon$.

Epsilon-freie Grammatiken

$ $Id: epsfree.tex,v 1.2 2003/12/03 11:51:10 joe Exp $ $

Def: eine CFG $ G$ heißt epsilon-frei, falls $ \forall (A \to r)\in R: r \neq \epsilon$.

Bemerkung: wenn $ G$ epsilon-frei, dann $ \epsilon \notin L(G)$.

Satz: Für jede CFG $ G$ existiert eine epsilon-freie CGF $ G'$ mit $ L(G') = L(G) \setminus \{\epsilon\}$.

Beweis: Wende auf alle rechten Regelseiten die Substitution

$ A \to $ ( wenn $A$ nullierbar, dann $ \{A, \epsilon\}$, sonst $ \{A\}$)

an, und lösche dann alle Epsilon-Regeln.

Aufgabe: Konstruiere $ G'$ für $ G$ mit $ R = \{ S \to \epsilon \mid aSb \mid SS \} $.

Kettenregeln

$ $Id: kette.tex,v 1.2 2003/12/03 11:51:10 joe Exp $ $

Eine Regel $ (l \to r)$ mit $ \vert r\vert=1$ heißt Kettenregel.

Der Ketten-Abschluß von $ G$ ist die kleinste Menge $ R'$ mit

Aufgaben: Wieviele Regeln kann man maximal hinzufügen?

Satz: Zu jeder CFG $ G$ existiert eine CFG $ G'$ ohne Kettenregeln mit $ L(G)=L(G')$.

Beweis: $ G'=(\Sigma,V,S,R'  $   ohne Kettenregeln$ )$.

Aufgabe: falls $ R$ epsilon-frei, dann auch $ R'$.

Kreise und kreisfreie Grammatiken

$ $Id: kreis.tex,v 1.1 2003/12/03 11:51:10 joe Exp $ $

Def: eine Kreis-Ableitung ist von der Form $ A \to_R^+ A$ für eine Variable $A$.

Satz: für jede CFG $ G$ gibt es eine kreisfreie CFG $ G'$ mit $ L(G)=L(G')$.

Idee: $ G$ epsilon-frei: $ G_1$, kettenfrei: $ G_2$, ist kreisfrei.

Aufgaben:


next up previous
Nächste Seite: Top-Down-Parser (von Hand) Aufwärts: Syntakt. Analyse (4. 12.) Vorherige Seite: Syntakt. Analyse (4. 12.)
Johannes Waldmann 2004-01-28