Übersetzungstechnik

Werbung
Übersetzungstechnik
Francesco Kriegel
TU Dresden
Fakultät Mathematik
Institut Algebra
WS 2008 / 2009
10. Januar 2010
Inhaltsverzeichnis
Kapitel 1 Automat
1.1 endlicher Automat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Kellerautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Turingmaschine und linear beschränkter Automat. . . . . . . . . .
3
3
6
8
Kapitel 2 Sprache und Grammatik
2.1 Alphabet und Sprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Grammatik und Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . . .
2.2.1 Satzgliederungsgrammatik (Typ 0). . . . . . . . . . . . . . . . . . . .
2.2.2 kontextsensitive Grammatik (Typ 1) . . . . . . . . . . . . . . . . . .
2.2.3 kontextfreie Grammatik (Typ 2) . . . . . . . . . . . . . . . . . . . . . .
2.2.4 reguläre Grammatik (Typ 3) . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
15
17
17
18
19
Kapitel 3 Kompilation
3.1 Analyse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 lexikalische Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2 syntaktische Analyse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 semantische Analyse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Synthese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Codeerzeugung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Optimierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
21
21
22
26
26
26
26
1
2
1 Automat
1.1 endlicher Automat
Definition 1.1 (endlicher Automat)
Ein endlicher Automat ist ein Quintupel
A = ( Q, Σ, →, i, F )
mit den folgenden Eigenschaften:
(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
7→ : ( Q \ F ) × Σ → Q
ist, und man schreibt A ∈ DFA.
Definition 1.2 (Pfad, akzeptierte Sprache)
Sei A = ( Q, Σ, →, i, F ) ein endlicher Automat.
(i) Eine endliche Folge
σ
σ
σn−1
σ
n
1
2
π = q0 →
q1 →
. . . → q n −1 →
qn
σ
von Zustandsübergängen qi →i qi+1 heißt Pfad der Länge n von q0
nach qn mit der Beschriftung β(π ) := σ1 . . . σn . Der leere Pfad hat
3
1 Automat
Länge 0 und Beschriftung e. 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
ω
L(A) := {ω ∈ Σ∗ | i →∗ F }.
(iii) Ein Paar
(q, σ) ∈ Q × Σ∗
heißt Konfiguration von A. Damit wird eine Konfigurationsübergangsrelation ⇒ definiert mit
x
( p, xα) ⇒ (q, α) :⇐⇒ p → 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, e)}.
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 e-Übergängen ist ein endlicher Automat
mit Wortübergängen, so dass → ⊆ ( Q \ F ) × Σ ∪ {e} × Q ist.
Satz 1.5 Zu jedem endlichen Automat mit e-Übergängen existiert ein
äquivalenter endlicher Automat.
4
1.1 endlicher Automat
Beweis: Sei A = ( Q, Σ, →, i, F ) ein endlicher Automat mit e-Übergängen. Einen
äquivalenten endlichen Automat A0 := ( Q, Σ, →0 , i, F 0 ) erhält man mit
σ
→0 := {( p, σ, q) ∈ ( Q \ F ) × Σ × Q | p →∗ q}
und
(
0
F :=
F ∪ {i }
F
e
(i → ∗ 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 A0 := (℘( Q), Σ, 7→, {i }, F 0 ) durch
σ
P 7→ :=
[
σ
p→
p∈ P
für alle P ∈ ℘( Q) und σ ∈ Σ und
F 0 := { P ∈ ℘( Q) | P ∩ F 6= ∅}.
Satz 1.7 Zu jedem deterministischen endlichen Automat existiert ein
äquivalenter kleinster deterministischer Automat.
Beweis: Sei A = ( Q, Σ, 7→, i, F ) ein deterministischer endlicher Automat. Ein
ω
Zustand q ∈ Q von A heißt erreichbar, wenn ein Wort ω ∈ Σ∗ mit i 7→∗ q existiert. Damit wird zunächst ein äquivalenter deterministischer endlicher Automat
konstruiert, der nur aus erreichbaren Zuständen besteht: A0 := ( Q0 , Σ, 7→0 , i, F0 )
mit
ω
Q0 : = { q ∈ Q | ∃ ω ∈ Σ ∗ : i 7 → ∗ q }
und 7→0 := 7→ ∩ Q0 × Σ × Q0 sowie F0 := F ∩ Q0 .
Für einen Zustand q ∈ Q sei Aq := ( Q, Σ, 7→, q, F ). Zwei Zustände p, q ∈ Q
heißen A-äquivalent, wenn L(A p ) = L(Aq ) gilt. Dafür schreibt man auch p ∼ q.
∼ ist eine Äquivalenzrelation auf Q und verträglich mit 7→. Damit wird nun der
Quotientenautomat zu A konstruiert, der äquivalente Zustände zusammenfasst:
A/∼ := ( Q/∼, Σ, 7→, [i ], F/∼) mit
[q] := { p ∈ Q | p ∼ q}
Q/∼ := {[q] | q ∈ Q}
5
1 Automat
σ
σ
[q] 7→ := [q 7→]
F/∼ := {[q] | q ∈ F }
Schließlich heißt Ared := A0 / ∼ der reduzierte Automat zu A und ist der kleinste deterministische endliche Automat, der L(A) akzeptiert. Ared hängt nur von
L(A) ab, d.h. aus L(A) = L(B) folgt Ared ∼
= 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
A(L) := (Σ∗ /∼, Σ, 7→, [e], L/∼)
σ
mit [ω ] 7→ [ωσ].
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
Ared ∼
= A(L).
1.2 Kellerautomat
Definition 1.10 (Kellerautomat)
Ein Kellerautomat ist ein 7-Tupel
A = ( Q, Σ, Γ, →, #, i, F )
mit den folgenden Eigenschaften:
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 ) × Γ × (Σ ∪ {e}) × 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
x
∀q ∈ Q \ F ∀ A ∈ Γ ∀ x ∈ Σ : |(q, A) → | + |(q, A) → | ≤ 1
e
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
x
( p, Aα, xβ) ⇒ (q, ωα, β) :⇐⇒ ( p, A) → (q, ω ).
Wir setzen ⇒∗ als die reflexiv-transitive Hülle von ⇒.
(ii) A akzeptiert das Wort ω ∈ Σ∗ , wenn ein Zustand q ∈ Q existiert
mit
(i, #, ω ) ⇒∗ (q, e, e).
Die von A akzeptierte Sprache ist
L(A) := {ω ∈ Σ∗ | ∃q ∈ F : (i, #, ω ) ⇒∗ (q, e, e)}.
7
1 Automat
1.3 Turingmaschine und linear beschränkter
Automat
Definition 1.12 (Turingmaschine)
Eine Turingmaschine A ist ein 7-Tupel
A = ( Q, Σ, Γ, →, , i, F )
mit den folgenden Eigenschaften:
(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
7→ : ( Q \ F ) × Γ → { L, 0, R} × Q × Γ
ist, und man schreibt A ∈ DTM.
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β
0
:⇐⇒ ( p, A) → (q, B)
αpA ⇒ αqB
9
1 Automat
αpAβ ⇒ αBqβ
R
:⇐⇒ ( p, A) → (q, B)
αpA ⇒ αBq
αCpAβ ⇒ αqCBβ
ωpAβ ⇒ qωBβ
L
:⇐⇒ ( p, A) → (q, B).
Wir setzen ⇒∗ als die reflexiv-transitive Hülle von ⇒.
(ii) Gilt κ ⇒∗ κ 0 , so heißt κ 0 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, Σ, Γ, →, , C, B, i, F ) ist eine
Turingmaschine ( Q, Σ, Γ, →, , i, F ) mit den folgenden Eigenschaften:
(i) C, B∈ Γ \ Σ sind Symbole für den linken bzw. rechten Rand,
X
X
X
X
(ii) für Übergänge ( p, C) → (q, A) und ( p, A) → (q, C) gilt stets
X = R und A = C, d.h. der linke Rand ist fest und darf nicht
überschritten werden,
(iii) für Übergänge ( p, B) → (q, A) und ( p, A) → (q, B) gilt stets
X = L und A = B, 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
CiωB ⇒∗ κ
existiert. Die von A akzeptierte Sprache ist
L(A) := {ω ∈ Σ∗ | ∃akzeptierende Stoppkonfiguration κ : CiωB ⇒∗ κ }.
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 e.
(iii) Die Konkatenation ist eine Operation
◦:
Σn × Σm → Σn+m
0
0
(ω1 . . . ωn , ω10 . . . ωm
) 7→ ω1 . . . ωn ω10 . . . ωm
.
Es gilt Σn+1 = Σn ◦ Σ und Σ0 = {e}. Statt ω ◦ ω 0 schreibt man
auch einfach ωω 0 .
(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 Σ+ =
S∞
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 L1 ∪ L2
(ii) Durchschnitt L1 ∩ L2
(iii) Komplement L := Σ∗ \ L
(iv) Differenz L1 \ L2 := L1 ∩ L2
(v) Konkatenation L1 ◦ L2 := {ω1 ◦ ω2 | ω1 ∈ L1 , ω2 ∈ L2 }
(vi) Potenz Ln+1 := Ln ◦ L mit L0 := {e}
(vii) Kleene-Hülle L∗ :=
S∞
(viii) positive Hülle L+ :=
14
n =0
S∞
Ln
n =1
Ln
2.2 Grammatik und Chomsky-Hierarchie
2.2 Grammatik und Chomsky-Hierarchie
Typ 0
RE
O
TM DTM
Typ 1
GCS
O
;
vv
vv
v
vv
vv
v
vv
TPDA
CS o
O
LBA
/ KNF
O
DCS
O
DLBA
Typ 2
DGCS
o
DTPDA
: CF
\99
t
t
99
O
tt PDA
99 tttt
t
9
tt 9
tt 99
99
ULTRALIN
O
99
99
99
/ CNF o
/ GNF
DCF o
B O
LIN
OPDA
O
DLIN
DOPDA
cHH
HH
HH
HH
HH
H
/ LR(k ) o
/ LR(1)
O bEE
EE
EE
EE
EE
METALIN
O
DPDA
LR(0)
Typ 3
REG
LL(k) o
O
/ LF(k)
O
LL(1) o
O
/ LF(1)
O
LL(0) o
/ LF(0)
FA DFA
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 ∗ , deren Elemente Produktions| {z
=V ∗ \ Σ ∗
regeln 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
n =0
die reflexiv-transitive Hülle von ⇒.
(iii) Die Sprache
L(G) = {ω ∈ Σ∗ | S ⇒∗ ω }
heißt die von G erzeugte Sprache.
(iv) Eine Sprache L heißt Typ-i-Sprache, wenn es eine Typ-i-Grammatik
G mit L(G) = L gibt.
(v) Zwei Grammatiken G1 und G2 heißen äquivalent, wenn L(G1 ) =
L(G2 ) 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.
∀L ⊆ Σ∗ : ∃G ∈ 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-1Grammatik, falls alle Produktionsregeln von der Form
αAβ → αωβ
mit α, β ∈ V ∗ , ω ∈ V + und A ∈ N sind, oder
S → e,
wenn S * ψ für alle φ → ψ.
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.
∀L ⊆ Σ∗ : ∃G ∈ 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 → e 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 0 ∈ KNF : L(G 0 ) = 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.
∀L ⊆ Σ∗ : ∃G ∈ 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 → e 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 0 ∈ CNF : L(G 0 ) = 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 → e 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 0 ∈ GNF : L(G 0 ) = 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 ◦ Σ ∪ Σ ∪ {e} sind, d.h. → ⊆ N × N ◦ Σ ∪
Σ ∪ {e}. Entsprechend heißt G rechtsregulär, falls → ⊆ N × Σ ◦ N ∪ Σ ∪
{e}, 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(Σ) ::= ∅ | e | Σ | (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(e) := {e}, 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.
∀L ⊆ Σ∗ : ∃G ∈ REG : L(G) = L ⇐⇒ ∃ρ ∈ Reg(Σ) : L(ρ) = L
Satz 2.22 Eine Sprache L ist genau dann regulär bzw. eine Typ-3Sprache, wenn ein endlicher Automat A mit L(A) = L existiert.
∀L ⊆ Σ∗ : ∃G ∈ 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, E0 }, Σ, `, S, { E0 })
geschehen. Die Zustandsübergangsrelation ist dabei definiert durch
x
A ` B :⇐⇒ A → Bx
x
A ` E :⇐⇒ A → x
e
A ` B :⇐⇒ A → e.
Damit ergibt sich die Konfigurationsübergangsrelation zu
( A, xα) ( B, α) ⇐⇒ A → Bx
( A, xα) ( E, α) ⇐⇒ A → x
( A, α) ( E, α) ⇐⇒ A → e.
Um nach einem erkannten Morphem mit der Analyse des verbleibenden
Textes fortzufahren, wird noch
( E, α) (S, α)
21
3 Kompilation
( E, e) ( E0 , 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, T1 ) (S, T1 ) ∗ ( E, T2 ) · · · ∗ ( E, Tn ) (S, Tn ) ∗ ( E, e) ( E0 , e)
und die Wörter
ω0 := T \ T1 , ω1 := T1 \ T2 , . . . , ωn−1 := Tn−1 \ Tn , ωn := Tn
bilden die Folge der Morpheme (ωk )nk=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 A1 α1 A2 α2 . . . An αn
genau die Subknoten v1 , v2 , . . . , vn ∈ V mit f (vi ) = Ai → β i
hat.
(ii) Auf V ist eine lexikalische Ordnung definiert durch
v1 ≤ v2 :⇐⇒ (v1 , v2 ) ∈ E∗
∨ ∃v, v0 , v00 ∈ V :
(v, v0 ) ∈ E, (v0 , v1 ) ∈ E∗ ,
(v, v00 ) ∈ E, (v00 , v2 ) ∈ E∗ ,
f ( v ) = A → α0 A1 α1 A2 α2 . . . A n α n ,
f ( v1 ) = A i → β i ,
f ( v2 ) = A j → β j ,
i<j
23
3 Kompilation
(iii) Die Präfixlinearisierung von Γ ist definiert durch
prelin(Γ) := f (w) f (v0 ) f (v1 ) . . . f (vk )
für V = {w, v0 , v1 , . . . , vk } und vi < v j für i < j.
(iv) Γ heißt präfixlinearisierter Syntaxbaum von ω ∈ L(G), wenn
f (w)
f ( v0 )
f ( v1 )
f (vk )
S ⇒ . . . ⇒ . . . ⇒ . . . ⇒ ω,
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
e
− :⇐⇒ A → ω
A`←
ω
x
x ` e :⇐⇒ 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, ω, e) ∗ (e, e, γ)
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
(αω, β, γ) (αA, β, γ( A, ω )) ⇐⇒ A → ω
(α, xβ, γ) (αx, β, γ) ⇐⇒ x ∈ Σ.
Für ω ∈ L gilt dann
(e, ω, e) ∗ (S, e, γ)
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: Sei G = ( N, Σ, →, S) eine in A direkt linksrekursive Grammatik. Dann
ist
G 0 := ( N ∪ { A0 , A00 }, Σ, →0 , S)
mit
→0 := ((→ \{ A → Aβ}) \ { A → ω | A ω })
∪ { A0 →0 e, A0 →0 A00 A0 }
∪ { A00 →0 ω | A → Aω }
∪ { A →0 ωA0 | 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: Sei G = ( N, Σ, →, S) eine in A indirekt linksrekursive Grammatik. Dann
ist
G 0 := ( N, Σ, →0 , S)
mit
→0 := (→ \{ A0 → Aβ 0 | A ⇒∗ Aβ 0 β, A ⇒∗ A0 β})
∪ { A0 → β0 β 0 | A ⇒∗ Aβ 0 β, A ⇒∗ A0 β, A0 → Aβ 0 , A → β0 }
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
Herunterladen