Ü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