Ü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