uebung01_loesung

Werbung
Formale Sprachen, Automaten, Compiler
Berufsakademie Lörrach, TIT06 - 3. Semester
Übung 1 -> LÖSUNGSVORSCHLAG
Σ = { 0, 1, ..., 9 }, ist sicher ein
Alphabet, aber auch ΣH = { 0, 1, ..., 9, A, B, ..., F } für die hexadezimale
Darstellung, ΣD = { 0, 1 } für die Dualzahlen oder ΣS = { | } für
Strichzahlen sind Möglichkeiten. Auch ein Alphabet wie Σ = { I, V, X, L, C,
D, M } für die römischen Zahlen wäre denkbar.
ÜA1.1. Die "normalen" Dezimalziffern, also
b) Über dem Terminal-Alphabet
T = { 0, 1, ..., 9 } wäre
P = { S → 0S | 1S | 2S | … | 9S | ε }
eine Grammatik, die die "Wörter" für die natürlichen Zahlen erzeugt.
Über dem Terminal-Alphabet
TD = { 0, 1 } wäre
P = { S → 0S | 1S | ε }
eine mögliche Grammatik zum Erzeugen Dualzahlen.
Für das Terminal-Alphabet
TD = { I } schließlich wählt man z.B.
P = { S → |S | ε }
eine mögliche Grammatik zum Erzeugen Dualzahlen.
c) Die Grammatiken sind alle rechtslinear/ regulär und damit vom Typ 3.
BA Lörrach: Formale Sprachen, Automaten, Compiler, TIT06 – 3. Sem, Dipl.-Inf. Robert Grübel
Seite 1
ÜA1.2.
a)
L(G) = { ε, ac, ab, cab } mit T = { a, b, c }
b)
L(G) = { 0nb | n ≥ 0 } mit T = { 0, b }
c)
L(G) = Ø
d)
L(G) = { lnmnn | n ≥ 0 } mit T = { l, m, n }
e)
L(G) = { 020, 021, 120, 121} mit T = { 0, 1, 2 }
(es können keine Terminal-Wörter erzeugt werden!)
Ü1.3.
Typ-3 / regulär: a), b), c)
linear: a), b), c), d)
Typ- 2 / kontextfrei: a), b), c), d)
Typ-0: e)
ACHTUNG: Die Sprache aus e) ist regulär, hier erzeugt eine Typ-0Grammatik eine reguläre Sprache - und das bedeutet, es muß auch eine
reguläre Grammatik geben, die dieselbe Sprache erzeugt.
BA Lörrach: Formale Sprachen, Automaten, Compiler, TIT06 – 3. Sem, Dipl.-Inf. Robert Grübel
Seite 2
ÜA1.4.
a)
N
= { S }, P = { S → abc | cba }
b)
N = { S, A }, P = { S → AAA, A → a | b | c }
c)
N = { S, A }, P = { S → AaA, A → bA | cA | ε }
d)
N = { S, A }, P = { S → AaA, A → aA | bA | cA | ε }
e)
N = { S, A }, P = { S → AaA | A, A → bA | cA | ε }
f)
N = { S }, P = { S → aSc | aabb }
g)
N = { S,A,B },
P = { S → AB, A → aAb | ε, B → cB | ε }
h)
N = { S }, P = { S → aSa | bSb| cSc| ε }
i)
N = { S },
P = { S → aA | bS | cS, A → aS | bA | cA | ε }
j)
N = { S, S1, S2, A },
P = { S → S1 | S2,
S1 → AaA, A → aA | bA | cA | ε,
S2→ aS2a | bS2b | cS2c | ε }
k)
N = { S },
P = { S → aAa | bSb | cSc,
A → aAa | bAb | cAc | ε }
l)
N = { S },
P = { S → S1S2,
S1 → AaA, A → aA | bA | cA | ε,
S2 → aS2a | bS2b | cS2c | ε }
Ü1.5. regulär: a), i), kontextfrei: b), c), d),e), f), g), h), j), k), l)
linear: a), f), h), i), k)
ACHTUNG: Die Sprachen aus b) bis e) sind regulär, hier erzeugen Typ-2Grammatiken reguläre Sprachen, - das bedeutet, es gibt zur jeweiligen
Sprache eine reguläre Grammatik, die sie erzeugt.
BA Lörrach: Formale Sprachen, Automaten, Compiler, TIT06 – 3. Sem, Dipl.-Inf. Robert Grübel
Seite 3
Ü1.6.
a)
N = { INTZAHL, VZ, BZAHL, CZAHL }, mit
P= {
NTZAHL → VZ BZAHL,
BZAHL → 1CZAHL | ... | 9CZAHL,
CZAHL → 0CZAHL | 1CZAHL | ... | 9CZAHL | ε
VZ → + | -
}
Die Grammatik ist zu denen aus Ü1.1 natürlich sehr ähnlich, sie erzeugt ja
sozusagen die ganzen Zahlen, und das sind die natürlichen Zahlen mit Plus
oder Minus davor. "BZHAL" und "CZAHL" braucht man wg. der Bedingung
"ohne führende Nullen".
b) Die Grammatik ist regulär, also vom Typ 3.
Ü1.7.
Die Beispiel-Grammatik aus der Vorlesung war
N = { SATZ, SUBJEKT, PRÄDIKAT },
S = SATZ,
T = { Georg, Hans, Fritz, geht, läuft, rennt } und
P={
SATZ
SUBJEKT
PRÄDIKAT
→
→
→
SUBJEKT PRÄDIKAT
Georg | Hans | Fritz
geht | läuft | rennt
}
Um die Grammatik um die syntaktische Variable "Objekt" zu erweitern muß
man sie natürlich zur Menge dazu nehmen:
N = { SATZ, SUBJEKT, PRÄDIKAT, OBJEKT },
BA Lörrach: Formale Sprachen, Automaten, Compiler, TIT06 – 3. Sem, Dipl.-Inf. Robert Grübel
Seite 4
Dann muß man zur Menge T mögliche, als Objekt in Frage kommende
Terminale-Symbole hinzufügen. Das könnten "nach Hause" und "zum Zug"
sein, also wird aus dem "alten" T jetzt
T = { Georg, Hans, Fritz, geht, läuft, rennt, nach Hause, zum Zug }.
Jetzt kann man die Produktions-Regel für SATZ ändern in
SATZ → SUBJEKT PRÄDIKAT OBJEKT
und die neue Produktions-Regel
OBJEKT → nach Hause | zum Zug
einführen.
b) Die von der "neuen" Grammatik erzeugte Sprache sind die neun "Sätze
der "alten" Sprache, jeweils erweitert um die Wendungen "nach Hause" und
"zum Zug". Also
L(G) = {
Georg geht nach Hause, Georg läuft nach Hause, Georg rennt nach
Hause,
Georg geht zum Zug, Georg läuft zum Zug, Georg rennt zum Zug,
Hans geht nach Hause, Hans läuft nach Hause, Hans rennt nach
Hause,
Hans geht zum Zug, Hans läuft zum Zug, Hans rennt zum Zug,
Fritz geht nach Hause, Fritz läuft nach Hause, Fritz rennt, nach
Hause,
Fritz geht zum Zug, Fritz läuft zum Zug, Fritz rennt zum Zug
}
c) Die Grammatik ist kontextfrei, daher vom Typ 2.
ANMERKUNG: Die Sprache dagegen ist regulär/ Typ-3. Hier erzeugt eine
kontextfreie Grammatik eine reguläre Sprache, und wieder muß es also auch
eine reguläre Grammatik geben, die dieselbe Sprache erzeugt.
BA Lörrach: Formale Sprachen, Automaten, Compiler, TIT06 – 3. Sem, Dipl.-Inf. Robert Grübel
Seite 5
Herunterladen