Programmiersprachen und ¨Ubersetzer – ¨Ubung 1

Werbung
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
Herunterladen