Übersetzungstechnik. Francesco Kriegel. TU Dresden Fakultät Mathematik Institut Algebra WS 2008 / 2009

Ähnliche Dokumente
Informatik III - WS07/08

Kontextfreie Sprachen

Kontextfreie Sprachen

Automaten und formale Sprachen Klausurvorbereitung

8. Turingmaschinen und kontextsensitive Sprachen

Deterministischer Kellerautomat (DPDA)

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit. Zugangsnummer: 9201

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie

ADS-EI 5.2 Struktur einer Turing-Maschine 120/451 ľernst W. Mayr

10 Kellerautomaten. Kellerautomaten

11.1 Kontextsensitive und allgemeine Grammatiken

Theoretische Informatik Testvorbereitung Moritz Resl

Übersicht. 3 3 Kontextfreie Sprachen

Definition 78 Ein NPDA = PDA (= Nichtdeterministischer Pushdown-Automat) besteht aus:

Formale Sprachen. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

Beweis: Nach dem Pumping-Lemma für kontextfreie Sprachen ist

Formale Grundlagen der Wirtschaftsinformatik

Definition 98 Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für alle q Q gilt:

4.2.4 Reguläre Grammatiken

Rekursiv aufzählbare Sprachen

Carlos Camino Einführung in die Theoretische Informatik SS 2015

Theorie der Informatik

Das Halteproblem für Turingmaschinen

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Grundlagen der Theoretischen Informatik

Formale Sprachen und endliche Automaten

Einführung in die Computerlinguistik Chomskyhierarchie

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Einführung in die Computerlinguistik. Chomskyhierarchie. Dozentin: Wiebke Petersen Wiebke Petersen Einführung CL (SoSe 2010) 1

Einführung in die Computerlinguistik Chomskyhierarchie

5. Die syntaktische Analyse

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Informatik 3 Theoretische Informatik WS 2015/16

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Typ-1-Sprachen. Satz 1 (Kuroda ( ) 1964)

Zusammenfassung. Beispiel. 1 Wir betrachten die folgende Signatur F = {,, +, 0, 1} sodass. 3 Wir betrachten die Identitäten E. 4 Dann gilt E 1 + x = 1

Theoretische Informatik 2

F2 Zusammenfassung Letzte Tips zur Klausur

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken

Ogden s Lemma: Der Beweis (1/5)

Typ-0-Sprachen und Turingmaschinen

Theoretische Informatik II

Formale Grundlagen der Wirtschaftsinformatik

Kurz-Skript zur Theoretischen Informatik I

Akzeptierende Turing-Maschine

Theoretische Grundlagen der Informatik

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.

kontextfreie Sprachen: Normalformen

DisMod-Repetitorium Tag 4

2.4 Kontextsensitive und Typ 0-Sprachen

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik

Formale Sprachen und Automaten

Einführung in die Theoretische Informatik

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme

Worterkennung in Texten speziell im Compilerbau 20. April Frank Heitmann 2/64

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Turing: prinzipielle Berechenbarkeit Abschnitt 4.2. Turingmaschinen: DTM Abschnitt 4.2. DTM: Akzeptieren und Entscheiden Abschnitt 4.

Theoretische Informatik Mitschrift

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Automatentheorie und formale Sprachen rechtslineare Grammatiken

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

Einführung in die Computerlinguistik

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Grundlagen der Theoretischen Informatik

Kontextfreie Sprachen werden von PDAs akzeptiert

Grundlagen der Theoretischen Informatik

A : z z A : z z : ( z, x, z ) δ

2.2 Reguläre Sprachen Endliche Automaten

FoSAP-Panikzettel. Caspar Zecha, Philipp Schröer, Fabian Meyer, Christoph von Oy, Tobias Polock 5. April Grundlagen 2

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Formale Sprachen und Automaten: Tutorium Nr. 8

{a i b i i 0} FORMALE SYSTEME. Kellerautomaten. (Nicht)Abschlusseigenschaften für Typ 2. Ein Berechnungsmodell für Typ-2-Sprachen

Sprachen/Grammatiken eine Wiederholung

Alphabet, formale Sprache

Theoretische Informatik I (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. 1.5 Tabellen

Formale Sprachen. Spezialgebiet für Komplexe Systeme. Yimin Ge. 5ahdvn. 1 Grundlagen 1. 2 Formale Grammatiken 4. 3 Endliche Automaten 5.

Die oben aufgelisteten Sprachfamilien werden von oben nach unten echt mächtiger, d.h. die Familie der regulären Sprachen ist eine echte Teilfamilie

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

5.2 Endliche Automaten

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Berechenbarkeit und Komplexität

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Satz (Abschluß unter der Stern-Operation)

Automaten und Formale Sprachen SoSe 2013 in Trier

Grundlagen der theoretischen Informatik

Teil VI. Anwendungen, Teil 1: XML und deterministische reguläre Ausdrücke

Theoretische Informatik I

Transkript:

Übersetzungstechnik Francesco Kriegel TU Dresden Fakultät Mathematik Institut Algebra WS 2008 / 2009 10. Januar 2010

Inhaltsverzeichnis Kapitel 1 Automat 3 1.1 endlicher Automat..................................... 3 1.2 Kellerautomat......................................... 6 1.3 Turingmaschine und linear beschränkter Automat.......... 8 Kapitel 2 Sprache und Grammatik 13 2.1 Alphabet und Sprache.................................. 13 2.2 Grammatik und Chomsky-Hierarchie.................... 15 2.2.1 Satzgliederungsgrammatik (Typ 0).................... 17 2.2.2 kontextsensitive Grammatik (Typ 1).................. 17 2.2.3 kontextfreie Grammatik (Typ 2)...................... 18 2.2.4 reguläre Grammatik (Typ 3)......................... 19 Kapitel 3 Kompilation 21 3.1 Analyse............................................... 21 3.1.1 lexikalische Analyse................................ 21 3.1.2 syntaktische Analyse................................ 22 3.1.3 semantische Analyse................................ 26 3.2 Synthese.............................................. 26 3.2.1 Codeerzeugung.................................... 26 3.2.2 Optimierung....................................... 26 1

2

1 Automat 1.1 endlicher Automat Definition 1.1 (endlicher Automat) Ein endlicher Automat ist ein Quintupel mit den folgenden Eigenschaften: A = (Q, Σ,, i, F) (i) Q ist eine endliche Menge von Zuständen, (ii) Σ ist ein endliches Alphabet, (iii) i Q ist ein Anfangszustand, (iv) (Q \ F) Σ Q ist eine Zustandsübergangsrelation, (v) F Q ist eine Menge von Endzuständen. Man schreibt A FA. Ein endlicher Automat heißt deterministisch, wenn die Zustandsübergangsrelation eine Zustandsübergangsfunktion ist, und man schreibt A DFA. : (Q \ F) Σ Q Definition 1.2 (Pfad, akzeptierte Sprache) Sei A = (Q, Σ,, i, F) ein endlicher Automat. (i) Eine endliche Folge σ π = q 1 σ 0 2 σ n 1 σ q1... q n n 1 qn σ von Zustandsübergängen q i i qi+1 heißt Pfad der Länge n von q 0 nach q n mit der Beschriftung β(π) := σ 1... σ n. Der leere Pfad hat 3

1 Automat Länge 0 und Beschriftung ɛ. Man schreibt p ω q, wenn es einen Pfad von p nach q mit der Beschriftung ω gibt, und weiter sei P ω Q, wenn es Zustände p P und q Q mit p ω q gibt. (ii) A akzeptiert das Wort ω Σ ω, wenn i F gilt. Die von A akzeptierte Sprache ist (iii) Ein Paar L(A) := {ω Σ i (q, σ) Q Σ ω F}. heißt Konfiguration von A. Damit wird eine Konfigurationsübergangsrelation definiert mit (p, xα) (q, α) : p x q. Wir setzen als die reflexiv-transitive Hülle von. Lemma 1.3 (i) Es gilt p ω q genau dann, wenn (p, ωα) (q, α). (ii) Für A TM gilt L(A) = {ω Σ q F : (i, ω) (q, ɛ)}. Definition 1.4 (endlicher Automat mit Wortübergängen) (i) Ein endlicher Automat mit Wortübergängen ist ein Quintupel A = (Q, Σ,, i, F), bei dem Q, Σ, i, F wie für einen endlichen Automat definiert sind und (Q \ F) Σ Q ist. (ii) Ein endlicher Automat mit ɛ-übergängen ist ein endlicher Automat mit Wortübergängen, so dass (Q \ F) Σ {ɛ} Q ist. Satz 1.5 Zu jedem endlichen Automat mit ɛ-übergängen existiert ein äquivalenter endlicher Automat. 4

1.1 endlicher Automat Beweis: Sei A = (Q, Σ,, i, F) ein endlicher Automat mit ɛ-übergängen. Einen äquivalenten endlichen Automat A := (Q, Σ,, i, F ) erhält man mit := {(p, σ, q) (Q \ F) Σ Q p σ q} und F := { ɛ F {i} (i F) F (sonst). Satz 1.6 Zu jedem endlichen Automat existiert ein äquivalenter deterministischer endlicher Automat. Beweis: Sei A = (Q, Σ,, i, F) ein endlicher Automat. Dann erhält man einen deterministischen endlichen Automat A := ( (Q), Σ,, {i}, F ) durch für alle P (Q) und σ Σ und P σ := p σ p P F := {P (Q) P F = }. Satz 1.7 Zu jedem deterministischen endlichen Automat existiert ein äquivalenter kleinster deterministischer Automat. Beweis: Sei A = (Q, Σ,, i, F) ein deterministischer endlicher Automat. Ein Zustand q Q von A heißt erreichbar, wenn ein Wort ω Σ ω mit i q existiert. Damit wird zunächst ein äquivalenter deterministischer endlicher Automat konstruiert, der nur aus erreichbaren Zuständen besteht: A 0 := (Q 0, Σ, 0, i, F 0 ) mit Q 0 := {q Q ω Σ : i ω q} und 0 := Q 0 Σ Q 0 sowie F 0 := F Q 0. Für einen Zustand q Q sei A q := (Q, Σ,, q, F). Zwei Zustände p, q Q heißen A-äquivalent, wenn L(A p ) = L(A q ) gilt. Dafür schreibt man auch p q. ist eine Äquivalenzrelation auf Q und verträglich mit. Damit wird nun der Quotientenautomat zu A konstruiert, der äquivalente Zustände zusammenfasst: A/ := (Q/, Σ,, [i], F/ ) mit [q] := {p Q p q} Q/ := {[q] q Q} 5

1 Automat [q] σ := [q ] σ F/ := {[q] q F} Schließlich heißt A red := A 0 / der reduzierte Automat zu A und ist der kleinste deterministische endliche Automat, der L(A) akzeptiert. A red hängt nur von L(A) ab, d.h. aus L(A) = L(B) folgt A red = Bred. Definition 1.8 (erzeugter Automat) Sei L Σ eine Sprache. (i) Die Äquivalenzrelation α β : ω Σ : α ω L β ω L heißt Nerode-Rechtskongruenz. (ii) Das von L erzeugte Transitionssystem ist mit [ω] σ [ωσ]. A(L) := (Σ /, Σ,, [ɛ], L/ ) Satz 1.9 (i) Hat endlichen Index für eine Sprache L, so ist A(L) ein DEA mit L(A(L)) = L. (ii) Eine Sprache L ist genau dann erkennbar, wenn endlichen Index hat. (iii) Für eine erkennbare Sprache L ist A(L) der kleinste DEA mit L(A(L)) = L. (iv) Ist L eine erkennbare Sprache und A ein DEA mit L(A) = L, so gilt A red = A(L). 1.2 Kellerautomat Definition 1.10 (Kellerautomat) Ein Kellerautomat ist ein 7-Tupel mit den folgenden Eigenschaften: A = (Q, Σ, Γ,, #, i, F) 6

1.2 Kellerautomat (i) Q ist eine endliche Menge von Zuständen, (ii) Σ ist ein Alphabet von Eingabesymbolen, (iii) Γ ist ein Alphabet von Kellersymbolen, (iv) (Q \ F) Γ (Σ {ɛ}) Q Γ ist eine Zustandsübergangsrelation, (v) i Q ist ein Startzustand, (vi) # Γ ist ein Anfangssymbol im Keller, (vii) F Q ist eine Menge von finalen Zuständen. Man schreibt A PDA. Ein Kellerautomat heißt deterministisch, wenn die Zustandsübergangsrelation die Eigenschaft q Q \ F A Γ x Σ : (q, A) x + (q, A) ɛ 1 erfüllt, und man schreibt A DPDA. Definition 1.11 (Konfiguration, akzeptierte Sprache) Sei A = (Q, Σ, Γ,, #, i, F) ein Kellerautomat. (i) Ein Tripel (q, γ, σ) Q Γ Σ heißt Konfiguration von A. Damit wird eine Konfigurationsübergangsrelation definiert mit (p, Aα, xβ) (q, ωα, β) : (p, A) x (q, ω). Wir setzen als die reflexiv-transitive Hülle von. (ii) A akzeptiert das Wort ω Σ, wenn ein Zustand q Q existiert mit (i, #, ω) (q, ɛ, ɛ). Die von A akzeptierte Sprache ist L(A) := {ω Σ q F : (i, #, ω) (q, ɛ, ɛ)}. 7

1 Automat 1.3 Turingmaschine und linear beschränkter Automat Definition 1.12 (Turingmaschine) Eine Turingmaschine A ist ein 7-Tupel mit den folgenden Eigenschaften: A = (Q, Σ, Γ,,, i, F) (i) Q ist eine endliche Menge von Zuständen. (ii) Σ ist ein Alphabet von Eingabesymbolen. (iii) Γ Σ ist ein Alphabet von Bandsymbolen. (iv) (Q \ F) Γ {L, 0, R} Q Γ ist eine Zustandsübergangsrelation. (v) i Q ist ein Anfangszustand. (vi) Γ \ Σ ist ein Symbol für das leere Feld. (vii) F Q ist eine Menge von finalen Zuständen. Man schreibt auch A TM. Eine Turingmaschine heißt deterministisch, wenn die Zustandsübergangsrelation eine Zustandsübergangsfunktion ist, und man schreibt A DTM. : (Q \ F) Γ {L, 0, R} Q Γ 8

1.3 Turingmaschine und linear beschränkter Automat Definition 1.13 (Konfiguration, akzeptierte Sprache) Sei A = (Q, Σ, Γ,,, i, F) eine Turingmaschine. (i) Ein Wort κ = αqβ mit α, β Γ + und q Q heißt Konfiguration von A. Damit wird eine Konfigurationsübergangsrelation definiert mit αpaβ αqbβ αpa αqb : (p, A) 0 (q, B) 9

1 Automat αpaβ αbqβ αpa αbq : (p, A) R (q, B) αcpaβ αqcbβ ωpaβ qωbβ : (p, A) L (q, B). Wir setzen als die reflexiv-transitive Hülle von. (ii) Gilt κ κ, so heißt κ Folgekonfiguration von κ. Eine Konfiguration κ heißt Stoppkonfiguration, wenn sie keine Folgekonfiguration besitzt. Eine Konfiguration κ = αqβ heißt akzeptierend, falls q F. (iii) A akzeptiert das Wort ω Σ, wenn eine akzeptierende Stoppkonfiguration κ mit iω κ existiert. Die von A akzeptierte Sprache ist L(A) := {ω Σ akzeptierende Stoppkonfiguration κ : iω κ}. Definition 1.14 (linear beschränkter Automat) Ein linear-beschränkter Automat A = (Q, Σ, Γ,,,,, i, F) ist eine Turingmaschine (Q, Σ, Γ,,, i, F) mit den folgenden Eigenschaften: (i), Γ \ Σ sind Symbole für den linken bzw. rechten Rand, X X (ii) für Übergänge (p, ) (q, A) und (p, A) (q, ) gilt stets X = R und A =, d.h. der linke Rand ist fest und darf nicht überschritten werden, X X (iii) für Übergänge (p, ) (q, A) und (p, A) (q, ) gilt stets X = L und A =, d.h. der rechte Rand ist fest und darf nicht überschritten werden, und man schreibt A LBA bzw. A DLBA, falls A deterministisch ist. A akzeptiert das Wort ω Σ, wenn eine akzeptierende Stoppkonfiguration κ mit iω κ existiert. Die von A akzeptierte Sprache ist L(A) := {ω Σ akzeptierende Stoppkonfiguration κ : iω κ}. 10

1.3 Turingmaschine und linear beschränkter Automat 11

1 Automat 12

2 Sprache und Grammatik 2.1 Alphabet und Sprache Definition 2.1 (Alphabet) Ein Alphabet Σ ist eine endliche nicht-leere Menge. (i) Ein Symbol σ ist ein Element σ Σ. (ii) Ein Wort ω der Länge ω = n ist ein Vektor ω Σ n. Statt ω = (ω 1,..., ω n ) schreibt man auch einfach ω = ω 1... ω n. Das leere Wort der Länge 0 bezeichnen wir mit ɛ. (iii) Die Konkatenation ist eine Operation : Σ n Σ m Σ n+m (ω 1... ω n, ω 1... ω m) ω 1... ω n ω 1... ω m. Es gilt Σ n+1 = Σ n Σ und Σ 0 = {ɛ}. Statt ω ω schreibt man auch einfach ωω. (iv) Für ein Wort ω = ω p ω i ω s heißt ω p Präfix, ω i Infix und ω s Suffix von ω. (v) Die kleensche Hülle ist Σ = Σ n. n=0 (vi) Die positive Hülle ist Σ + = n=1 Σ n. Definition 2.2 (Sprache) Eine Sprache L über einem Alphabet Σ ist eine Teilmenge L Σ. Es gibt folgende Operationen auf Sprachen: 13

2 Sprache und Grammatik (i) Vereinigung L 1 L 2 (ii) Durchschnitt L 1 L 2 (iii) Komplement L := Σ \ L (iv) Differenz L 1 \ L 2 := L 1 L 2 (v) Konkatenation L 1 L 2 := {ω 1 ω 2 ω 1 L 1, ω 2 L 2 } (vi) Potenz L n+1 := L n L mit L 0 := {ɛ} (vii) Kleene-Hülle L := n=0 L n (viii) positive Hülle L + := n=1 L n 14

2.2 Grammatik und Chomsky-Hierarchie 2.2 Grammatik und Chomsky-Hierarchie Typ 0 RE TM DTM Typ 1 CS LBA GCS DCS TPDA DLBA KNF DGCS DTPDA ULTRALIN Typ 2 CF PDA CNF GNF METALIN DCF DPDA LIN OPDA DLIN DOPDA LR(k) LR(1) LR(0) LL(k) LL(1) LF(k) LF(1) Typ 3 REG FA DFA LL(0) LF(0) Definition 2.3 (Grammatik) Eine Grammatik G ist ein Quadrupel G = (N, Σ,, S) 15

2 Sprache und Grammatik mit den folgenden Eigenschaften: (i) N ist ein Alphabet von Nichtterminalsymbolen, (ii) Σ ist ein Alphabet von Terminalsymbolen, (iii) es gilt N Σ =, (iv) die Menge V := N Σ heißt Vokabular, (v) P ist eine Relation P V NV }{{} =V \Σ V, deren Elemente Produktionsregeln heißen, (vi) S ist ein Nichtterminalsymbol S N und heißt Startsymbol. Für eine Produktionsregel φ ψ heißt φ Prämisse und ψ Konklusion. Für eine Menge von Produktionsregeln φ ψ 1,..., φ ψ n schreibt man abkürzend φ ψ 1... ψ n. Definition 2.4 (erzeugte Sprache) Sei G = (N, Σ,, S) eine Grammatik. (i) Ein Wort ω V heißt ableitbar zu einem Wort ξ V genau dann, wenn µ, ν V (φ ψ) : ω = µφν ξ = µψν. Man schreibt dafür ω ξ. (ii) Wir setzen n+1 := n ; und 0 := V und damit ist := n=0 die reflexiv-transitive Hülle von. n (iii) Die Sprache heißt die von G erzeugte Sprache. L(G) = {ω Σ S ω} (iv) Eine Sprache L heißt Typ-i-Sprache, wenn es eine Typ-i-Grammatik G mit L(G) = L gibt. (v) Zwei Grammatiken G 1 und G 2 heißen äquivalent, wenn L(G 1 ) = L(G 2 ) gilt. 16

2.2 Grammatik und Chomsky-Hierarchie 2.2.1 Satzgliederungsgrammatik (Typ 0) Definition 2.5 (Typ-0-Grammatik) Jede Grammatik G heißt rekursiv aufzählbar bzw. Typ-0-Grammatik. Man schreibt G RE. Satz 2.6 (rekursiv-aufzählbare Sprache) Eine Sprache L ist genau dann rekursiv-aufzählbar bzw. eine Typ-0-Sprache, wenn eine Turingmaschine A mit L(A) = L existiert. ( ( G L Σ ) ( ) ) : RE: L(G) = L A TM: L(A) = L 2.2.2 kontextsensitive Grammatik (Typ 1) Definition 2.7 (kontextsensitive Grammatik) Eine Grammatik G = (N, Σ,, S) heißt kontextsensitiv bzw. Typ-1- Grammatik, falls alle Produktionsregeln von der Form αaβ αωβ mit α, β V, ω V + und A N sind, oder wenn S ψ für alle φ ψ. S ɛ, Definition 2.8 (monotone Grammatik) Eine Grammatik G = (N, Σ,, S) heißt monoton, falls für alle φ ψ gilt. φ ψ Satz 2.9 Eine Grammatik ist genau dann monoton, wenn sie kontextsensitiv ist. Satz 2.10 (kontextsensitive Sprache) Eine Sprache L ist genau dann kontextsensitiv bzw. eine Typ-1-Sprache, wenn eine linear-beschränkte Turingmaschine A mit L(A) = L existiert. ( ( G L Σ ) ( ) ) : CS: L(G) = L A LBA: L(A) = L 17

2 Sprache und Grammatik Definition 2.11 (Kuroda-Normalform) Eine Grammatik G heißt in Kuroda-Normalform, falls alle Produktionsregeln eine der folgenden Formen haben: (i) A a (ii) A B (iii) A BC (iv) AB CD Es darf auch die Regel S ɛ verwendet werden, wenn S in keiner Konklusion einer Regel vorkommt. Man schreibt G KNF. Satz 2.12 (i) G KNF = G CS (ii) G CS = G KNF: L(G ) = L(G) 2.2.3 kontextfreie Grammatik (Typ 2) Definition 2.13 (kontextfreie Grammatik) Eine Grammatik G = (N, Σ,, S) heißt kontextfrei bzw. Typ-2-Grammatik, falls alle Produktionsregeln von der Form A ω mit ω V und A N sind, d.h. N V. Satz 2.14 (kontextfreie Sprache) Eine Sprache L ist genau dann kontextfrei bzw. eine Typ-2-Sprache, wenn ein Kellerautomat A mit L(A) = L existiert. ( ( G L Σ ) ( ) ) : CF: L(G) = L A PDA: L(A) = L Definition 2.15 (Chomsky-Normalform) Eine Grammatik G heißt in Chomsky-Normalform, falls alle Produktionsregeln eine der folgenden Formen haben: (i) A a (ii) A BC 18

2.2 Grammatik und Chomsky-Hierarchie Es darf auch die Regel S ɛ verwendet werden, wenn S in keiner Konklusion einer Regel vorkommt. Man schreibt G CNF. Satz 2.16 (i) G CNF = G CF (ii) G CF = G CNF: L(G ) = L(G) Definition 2.17 (Greibach-Normalform) Eine Grammatik G heißt in Greibach-Normalform, falls alle Produktionsregeln die Form A aα mit α N haben. Es darf auch die Regel S ɛ verwendet werden, wenn S in keiner Konklusion einer Regel vorkommt. Man schreibt G GNF. Satz 2.18 (i) G GNF = G CF (ii) G CF = G GNF: L(G ) = L(G) 2.2.4 reguläre Grammatik (Typ 3) Definition 2.19 (reguläre Grammatik) Eine Grammatik G = (N, Σ,, S) heißt linksregulär, falls alle Produktionsregeln von der Form A ω mit A N und ω N Σ Σ {ɛ} sind, d.h. N N Σ Σ {ɛ}. Entsprechend heißt G rechtsregulär, falls N Σ N Σ {ɛ}, und G heißt regulär bzw. Typ-3-Grammatik, falls G linksregulär oder rechtsregulär ist. Definition 2.20 (reguläre Sprache) Sei Σ ein Alphabet. (i) Die Menge Reg(Σ) der regulären Ausdrücke über Σ ist induktiv definiert durch Reg(Σ) ::= ɛ Σ (Reg(Σ) + Reg(Σ)) (Reg(Σ) Reg(Σ)) Reg(Σ). (ii) Jeder reguläre Ausdruck ρ Reg(Σ) definiert eine Sprache L(ρ) 19

2 Sprache und Grammatik Σ und diese ist induktiv definiert durch L( ) :=, L(ɛ) := {ɛ}, L(σ) := {σ} L(ρ 1 + ρ 2 ) := L(ρ 1 ) L(ρ 2 ), L(ρ 1 ρ 2 ) := L(ρ 1 ) L(ρ 2 ), L(ρ ) := L(ρ). (iii) Eine Sprache L Σ heißt regulär, wenn es ein ρ Reg(Σ) mit L(ρ) = L gibt. Satz 2.21 Eine Sprache ist genau dann regulär, wenn sie vom Typ 3 ist. ( ( G L Σ ) ( ) ) : REG: L(G) = L ρ Reg(Σ) : L(ρ) = L Satz 2.22 Eine Sprache L ist genau dann regulär bzw. eine Typ-3- Sprache, wenn ein endlicher Automat A mit L(A) = L existiert. ( ( G L Σ ) ( ) ) : REG: L(G) = L A FA: L(A) = L 20

3 Kompilation 3.1 Analyse 3.1.1 lexikalische Analyse 1 42 127 Gegeben sei eine reguläre Grammatik G = (N, Σ,, S), die eine Sprache L := L(G) generiert. Die lexikalische Analyse bezüglich G zerlegt einen Eingabetext T Σ, der zunächst nur als Folge von Symbolen aus Σ vorliegt, in eine Folge von Morphemen bzw. Token aus L. Das kann recht einfach mit einem endlichen Automaten A = (N {E, E }, Σ,, S, {E }) geschehen. Die Zustandsübergangsrelation ist dabei definiert durch A x B : A Bx A x E : A x A ɛ B : A ɛ. Damit ergibt sich die Konfigurationsübergangsrelation zu (A, xα) (B, α) A Bx (A, xα) (E, α) A x (A, α) (E, α) A ɛ. Um nach einem erkannten Morphem mit der Analyse des verbleibenden Textes fortzufahren, wird noch (E, α) (S, α) 21

3 Kompilation (E, ɛ) (E, ɛ) gesetzt. Führt man nun A mit der Startkonfiguration (S, T) aus, so entsteht bei einem fehlerfreien Text eine endliche Folge von Konfigurationsübergängen (S, T) (E, T 1 ) (S, T 1 ) (E, T 2 ) (E, T n ) (S, T n ) (E, ɛ) (E, ɛ) und die Wörter ω 0 := T \ T 1, ω 1 := T 1 \ T 2,..., ω n 1 := T n 1 \ T n, ω n := T n bilden die Folge der Morpheme (ω k ) n k=0 des Eingabetextes T. 3.1.2 syntaktische Analyse Gegeben sei eine kontextfreie Grammatik G = (N, Σ,, S), die eine Sprache L := L(G) generiert. Die semantische Analyse bezüglich G zerlegt einen Eingabetext T Σ, der zunächst nur als Folge von Symbolen aus Σ vorliegt, in einen Syntaxbaum. 22

3.1 Analyse Definition 3.1 (Syntaxbaum) Sei G = (N, Σ,, S) eine kontextfreie Grammatik. (i) Ein markierter gerichteter Baum Γ = (V, E, f ) mit dem Wurzelknoten w V, einer Kantenmenge E V V und einer Markierung f : V heißt Syntaxbaum bezüglich G, wenn (i) f (w) = S α, und (ii) jeder Knoten v V mit f (v) = A α 0 A 1 α 1 A 2 α 2... A n α n genau die Subknoten v 1, v 2,..., v n V mit f (v i ) = A i β i hat. (ii) Auf V ist eine lexikalische Ordnung definiert durch v 1 v 2 : (v 1, v 2 ) E v, v, v V : (v, v ) E, (v, v 1 ) E, (v, v ) E, (v, v 2 ) E, f (v) = A α 0 A 1 α 1 A 2 α 2... A n α n, f (v 1 ) = A i β i, f (v 2 ) = A j β j, i < j 23

3 Kompilation (iii) Die Präfixlinearisierung von Γ ist definiert durch prelin(γ) := f (w) f (v 0 ) f (v 1 )... f (v k ) für V = {w, v 0, v 1,..., v k } und v i < v j für i < j. (iv) Γ heißt präfixlinearisierter Syntaxbaum von ω L(G), wenn S f (w)... f (v 0)... f (v 1)... f (v k) ω, d.h. falls S prelin(γ) ω gilt. Das kann recht einfach mit einem (vereinfachten) Kellerautomaten A = (N Σ, Σ,, S) geschehen. Die Zustandsübergangsrelation ist dabei definiert durch A ɛ ω : A ω x x ɛ : x Σ. Damit ergibt sich die Konfigurationsübergangsrelation zu (αa, β, γ) (α ω, β, γ(a, ω)) A ω (αx, xβ, γ) (α, β, γ) x Σ und dabei ist γ (N V ) der bisher aufgebaute präfixlinearisierte Syntaxbaum ist. Für ω L gilt (S, ω, ɛ) (ɛ, ɛ, γ) und γ ist der präfixlinearisierte Syntaxbaum von ω. Das entspricht der Top-Down-Analyse, d.h. ausgehend vom Satzsymbol S wird eine Folge von Übergängen zum Wort ω L gesucht. Für die Bottom-Up-Analyse wird ausgehend vom Wort ω eine Folge von Rückwärtsübergängen zum Satzsymbol S gesucht, dafür wird gesetzt Für ω L gilt dann (αω, β, γ) (αa, β, γ(a, ω)) A ω (α, xβ, γ) (αx, β, γ) x Σ. (ɛ, ω, ɛ) (S, ɛ, γ) und γ ist der postfixlinearisierte Syntaxbaum von ω. 24

3.1 Analyse Definition 3.2 (rekursiv) Sei G = (N, Σ,, S) eine kontextfreie Grammatik. Dann heißt G (i) direkt rechtsrekursiv in A, falls eine Regel A αa existiert, (ii) direkt linksrekursiv in A, falls eine Regel A Aβ existiert, (iii) direkt rekursiv in A, falls eine Regel A αaβ existiert, (iv) indirekt rechtsrekursiv in A, falls eine Ableitung A αa existiert, (v) indirekt linksrekursiv in A, falls eine Ableitung A Aβ existiert, (vi) indirekt rekursiv in A, falls eine Ableitung A αaβ existiert. Dabei sind A N und α, β V. Lemma 3.3 Zu jeder in einem Nichtterminalsymbol A direkt linksrekursiven Grammatik gibt es eine äquivalente nicht in A direkt linksrekursive Grammatik. Beweis: ist mit Sei G = (N, Σ,, S) eine in A direkt linksrekursive Grammatik. Dann G := (N {A, A }, Σ,, S) := (( \{A Aβ}) \ {A ω A ω}) {A ɛ, A A A } {A ω A Aω} {A ωa A ω, A ω} eine äquivalente Grammatik, die nicht in A direkt linksrekursiv ist. Satz 3.4 Zu jeder in einem Nichtterminalsymbol A indirekt linksrekursiven Grammatik gibt es eine äquivalente nicht in A indirekt linksrekursive Grammatik. Beweis: ist mit Sei G = (N, Σ,, S) eine in A indirekt linksrekursive Grammatik. Dann G := (N, Σ,, S) := ( \{A 0 Aβ 0 A Aβ 0 β, A A 0 β}) {A 0 β β 0 A Aβ 0 β, A A 0 β, A 0 Aβ 0, A β } eine äquivalente Grammatik, die nicht in A indirekt linksrekursiv ist. 25

3 Kompilation LF(k)-, LL(k)- und LR(k)-Grammatiken Definition 3.5 (LF(k)-Grammatik) Eine kontextfreie Grammatik G = (N, Σ,, S) heißt LF(k)-Grammatik, falls aus 3.1.3 semantische Analyse 3.2 Synthese 3.2.1 Codeerzeugung 3.2.2 Optimierung 26

Index Alphabet, 13 Grammatik, 15 Sprache, 13 27