Programmiersprachen und Übersetzer Berufsakademie Lörrach, TIT05 - 3. Semester Klausur, 1. Dez 2006 Aufgabe 1 2 3 4 5 6 7 8 Max. Punkte 6 8 17 22 22 18 6 20 9 Σ Note 22 141 Alle Bezeichnungen bitte gemäß der in der Vorlesung vereinbarten Schreibund Sprechweise verwenden. Aufgabe 1 [ 2 + 2 +2 = 6 ] 1.a) Was bedeutet L = { eins, zwei, drei }? 1.b) Geben Sie ein Beispiel für eine Sprache über 1.c) Bestimmen Sie die zum Σ = { a, be, ce, de, e, ef }. Σ aus 1.b) gehörende Menge Σ*. Aufgabe 2 [ 2 + 3 + 3 = 8 Punkte ] Seien L1 = Sprachen. { if, then, else, end } und L2 = { while, do, begin, end } zwei 2.a) Zu welcher Sprachklasse gehören L1 und L2. 2.b) Bestimmen Sie L1 ∩ L2. Zu welcher Sprachklasse gehört das Ergebnis? 2.c) Bestimmen Sie L1 - L2. Zu welcher Sprachklasse gehört das Ergebnis? BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 1 Aufgabe 3 [ 5 + 5 + 3 + 2 + 2 = 17 Punkte ] In der Programmiersprache OBERON werden, nach der folgenden Erklärung, Zahlen sind ganze oder reelle Zahlen ohne Vorzeichen. ... Reelle Zahlen haben immer einen Dezimalpunkt, und optional können sie einen Exponentialfaktor enthalten. Der Buchstabe E (oder D) wird gesprochen als "mal zehn hoch". Eine reelle Zahl ist vom Typ REAL, ausser der Exponentialfaktor enthält den Buchstaben D, dann ist sie vom Typ LONGREAL. Zahlen so definiert: Number = Integer | Real. Integer = digit {digit} | digit {hexdigit} "H" . Real = digit {digit} "." {digit} [ScaleFactor]. ScaleFactor = ("E" | "D") ["+" | "-"] digit {digit}. hexdigit = digit | "A" | "B" | "C" | "D" | "E" | "F". digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". ... eckige Klammern [ ] stehen für die Optionalität des eingeschlossenen Begriffes, geschweifte Klammern { } stehen für seine (evtl. 0-malige) Wiederholung. 3.a) Bringen Sie die Definition von Real (nur die von Real!) in die in der Vorlesung vereinbarten Schreibweise für Produktionsregeln (wenn Sie dabei Ersetzungen vornehmen, z.B. Real anstatt S als Startsymbol verwenden usw., geben Sie bitte die Entsprechungen an). 3.b) Bestimmen Sie zu den Produktionsregeln aus 3.a) die Mengen und das Startsymbol S, so daß Sie insgesamt eine vollständige Grammatikdefinition in der Form G = (N, Σ, P, S) erhalten. Bezogen auf die Grammatik Σ und N G aus 3.b): 3.c) Notieren Sie die Ableitungsschritte für das Wort 3.d) Ist 123.57 ableitbar? (Nur ja oder nein.) 3.e) Ist 22 ableitbar? (Nur ja oder nein.) 43.7E-3. BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 2 Aufgabe 4 [ 4 + 4 + 4 + 2 + 4 + 4 = 22 Punkte ] Gegeben seien der reguläre Ausdruck und der folgende endliche Automat r1 = dd*pd* M2 ,ε 4.a) Zeichnen Sie einen endlichen Automaten M1 mit L(M1) (evtl. Platz lassen für die Aufgaben 4.c), 4.e) und 4.f)!). 4.b) Bestimmen Sie einen regulären Ausdruck 4.c) Fügen Sie die beiden Automaten Automat M mit L(M) = L(r1r2) (oder = L(r1) r2 mit L(r2) = L(M2). M1 und M2 so zusammen, daß ein L(M) = L(M1)L(M2))entsteht. 4.d) Welche "Schaltung" haben Sie in 4.c) verwendet? 4.e) Zeichnen Sie einen zum Automaten M äquivalenten, ε-freien Automaten M'. Begründen Sie, wie Sie zu Ihrem Ergebnis kommen. 4.f) Erweitern Sie den Automaten äquivalenten Automaten M''. M' zu einem vollständigen, zu M' BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 3 Aufgabe 5 [ 4 + 6 + 3 + 3 + 6 = 22 Punkte ] Sei G = ( N, Σ, P, S ) die Grammatik mit N = { S, A, B, C, D }, Σ = { a, b, c, d, e, f } und P = { S → aAbAB, A → ε | aA, B → CDaA, C → c | d, D → ε | e | f 5.a) Zu welcher Grammatik-Klasse gehört G? Bitte mit Begründung. 5.b) Konstruieren Sie – mit dem Verfahren aus der Vorlesung - eine ε- freie, zu G äquivalente Grammatik G'. 5.c) Gehört das Wort aaabaa zur von G erzeugten Sprache L(G)? 5.d) Gehört das Wort aa zur von G erzeugten Sprache L(G)? 5.e) Zu welcher Sprachklasse gehört L(G)? Aufgabe 6 [ 4 + 6 + 4 + 4 = 18 Punkte ] Sei G = ( N, Σ, P, S ) die Grammatik mit N = { S, A, X }, Σ = { w, d, e, a, k, x } und P = { S → wXdAe, A → a | akA | S, X → xX | ε 6.a) Führen Sie für das Wort wxdwxdakaee eine Linksableitung durch, zeichnen Sie den Ableitungsbaum. 6.b) Konstruieren Sie zur Grammatik mit L(M) = L(G). G einen Kellerautomaten M 6.c) Führen Sie eine Rechnung des Kellerautomaten für das Wort Wird das Wort akzeptiert? wxda durch. 6.d) Führen Sie eine Rechnung des Kellerautomaten für das Wort wxdwxdakaee durch. Wird das Wort akzeptiert? BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 4 Aufgabe 7 [ 6 = 6 Punkte ] Überprüfen Sie, ob die Grammatik hat. Begründen Sie Ihre Antwort. G aus Aufgabe 6 die LL(1)-Eigenschaft Aufgabe 8 [ 6 + 6 + 4 + 4 = 20 Punkte ] Gegeben ist die Grammatik G = ( N, Σ, P, S ) mit N = { S, A, B, C }, Σ = { a, b, c, d, e, f } und P = { S → aCbAc, A → dB | S, S → edB | ε, C → fC | ε und der folgenden - unvollständigen – LL(1)-Parsing-Tabelle: b c d e f $ S a S → aCbAc fehler fehler fehler fehler fehler fehler A A→S fehler fehler fehler fehler B fehler fehler S → edB fehler fehler C fehler S→ε fehler fehler fehler fehler Hinweis: In den leeren Feldern fehlen sowohl Produktionsregeln als auch Fehler-Fälle. 8.a) Berechnen Sie die nötigen First- und Follow-Mengen, um die ParsingTabelle vervollständigen zu können. 8.b) Vervollständigen Sie die Parsing-Tabelle. 8.c) Führen Sie das tabellengesteuerte Parsen des Wortes Wird das Wort akzeptiert? afbafbdedcc durch. 8.d) Führen Sie das tabellengesteuerte Parsen des Wortes das Wort akzeptiert? afbd durch. Wird BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 5 Aufgabe 9 [ 2 + 2 + 2 + 2 + 4 + 4 + 6 = 22 Punkte ] Beantworten Sie die folgenden Aussagen mit Ja oder Nein. 9.a) Zu jeder regulären Grammatik Automaten M mit L(M) = L(G). 9.b) G gibt es einen vollständigen endlichen LL(k)-Sprachen werden von Kellerautomaten akzeptiert. 9.c) Kontextfreie Sprachen werden nicht von Kellerautomaten akzeptiert. 9.d) Die syntaktische Analyse eines Computer-Programmes erfolgt auf einem vorher erzeugten "Tokenstorm", es wird nicht das Programm selbst geprüft. Beantworten Sie die folgenden Aussagen mit Begründung. 9.e) Es gibt endlichen Automaten, zu denen keine äquivalenten Minimalautomaten existieren. 9.f) Es gibt kontextfreie Grammatiken, zu denen man jeweils einen endlichen Automaten konstruieren kann, der dann die erzeugte Sprache akzeptiert. 9.g) Jeder endliche Automat ist insbesondere auch ein Kellerautomat. BA Lörrach: Programmiersprachen und Übersetzer, TIT05 – 3. Sem, Dipl.-Inf. Robert Grübel Seite 6