Übungsblatt 11 Musterlösung

Transcription

Übungsblatt 11 Musterlösung
Formale Sprachen und Automaten - Übungsblatt 11 Lösung
17. Juli 2013
Formale Sprachen und Automaten
Übungsblatt 11 Musterlösung
17. Juli 2013
1 Entfernung von Linksrekursion
Gib zu der Grammatik G1 = h{S, T, U }, {a, b}, P1 , Si mit der Regelmenge
P1 = { S
→ TU
T
→ US | b
U
→ ST | a }
eine äquivalente Grammatik ohne Linksrekursion an.
1. Die Grammatik ist schon -frei.
2. Indirekte Linksrekursion wird in direkte Linksrekursion umgewandelt. Anordnung der
Nichtterminale: U > T > S.
Die Regel U → ST beginnt auf der rechten Regelseite mit T und kann übernommen
werden, da U > S.
Die Regel T → U S beginnt auf der rechten Regelseite mit U , aber U > T . Sie wird
ersetzt durch T → ST S | aS.
Die Regel S → T U beginnt auf der rechten Regelseite mit T , aber T > S. Sie wird
ersetzt durch S → ST SU | aSU | bU .
Neue Regelmenge bis jetzt:
P1 = { S
→ ST SU | aSU | bU
T
→ ST S | aS | b
U
→ ST | a }
3. Direkte Linksrekursion (bei S) wird entfernt.
Die Regel S → ST SU wird ersetzt durch S 0 → T SU S 0 . Außerdem werden die nichtlinksrekursiven Regeln S → aSU | bU ersetzt durch S → aSU S 0 | bU S 0 und es wird
S 0 → hinzugefügt.
1
Formale Sprachen und Automaten - Übungsblatt 11 Lösung
17. Juli 2013
Neue Regelmenge (nicht-linksrekursiv):
P1 = { S
→ aSU S 0 | bU S 0
S0
→ T SU S 0 | T
→ ST S | aS | b
U
→ ST | a }
Die neue Grammatik lautet also: G01 = h{S, S 0 , T, U }, {a, b}, P10 , Si.
2 Kontextfreie Grammatiken
Gegeben ist die Grammatik G2 = h{S, A, B}, {a, b}, P2 , Si mit der Regelmenge
P2 = { S
→
A →
B
→
aB | bA
a | aS | bAA
b | bS | aBB }.
1. In welcher Normalform steht G2 ?
Greibach-Normalform
2. Welche Sprache erzeugt G2 ? Gibt es auch eine reguläre Grammatik für diese Sprache?
L(G) enthält alle Wörter, in denen a und b gleich oft vorkommen. Diese Sprache ist nicht regulär.
3. Gibt es ein Wort, dem G2 mehr als eine Struktur zuweist?
Ja, diese Grammatik ist ambig, z.B. hat das Wort aababb mindestens zwei Strukturen.
4. Gib eine zu G2 äquivalente Grammatik in Chomsky-Normalform an.
G0 = h{S, A, B, C, D, E, F }, {a, b}, P 0 , Si mit folgenden Regeln:
P0 = {S
→ CB | DA
A
→ a | CS | DE
B
→ b | DS | CF
C
→ a
D
→ b
E
→ AA
F
→ BB }.
2
Formale Sprachen und Automaten - Übungsblatt 11 Lösung
17. Juli 2013
3 LR-Parsing
Gegeben ist die Grammatik G3 = h{S, T }, {a, b, c}, P3 , Si mit der Regelmenge
P3 = {S
T
→ T,
→ aT a | bT b | c}.
Konstruiere einen item set-Automaten (LR-Automaten) für G3 .
b
b
a
a
2
T
7
b
8
c
b
a
0
c
1
4
T
T
3
a
5
6
Dabei entsprechen die Zustände folgenden item sets:
0 {S → •T, T → •aT a, T → •bT b, T → •c}
1 {T → a • T a, T → •aT a, T → •bT b, T → •c}
2 {T → b • T b, T → •aT a, T → •bT b, T → •c}
3 {S → T •}
4 {T → c•}
5 {T → aT • a}
6 {T → aT a•}
7 {T → bT • b}
8 {T → bT b•}
Eine Beispielableitung für das Wort abcba sieht dann folgendermaßen aus:
0 (shift a) 01 (shift b) 012 (shift c) 0124 (reduce T → c) 0127 (shift b) 01278 (reduce T → bT b)
015 (shift a) 0156 (reduce T → aT a) 03 (reduce S → T ).
3