Folien

liinwww.ira.uka.de

Folien

Formale Sprachen und Automaten

Kapitel 4: Typ 2 — kontextfreie Sprachen

Vorlesung an der DHBW Karlsruhe

Thomas Worsch

Karlsruher Institut für Technologie, Fakultät für Informatik

Wintersemester 2012


Kapitel 4 Typ 2 — kontextfreie Sprachen

Kellerautomaten

Kontextfreie Grammatiken

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken

Inhalt 2/56


Kellerautomaten

Kontextfreie Grammatiken

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken

Kellerautomaten 3/56


4.1 Warnung

Im Unterschied zu endlichen Akzeptoren gibt es einen

Unterschied zwischen deterministischen

und nichtdeterministischen Kellerautomaten

hinsichtlich der Erkennungsmächtigkeit.

Kellerautomaten 4/56


4.2 Vorüberlegung

◮ Wie kann man DEA erweitern?

◮ Hinzunahme von Speicher.

◮ Extrem: „allgemeiner Prozessor“ mit unbeschränkt viel

Speicher mit wahlfreiem Zugriff

◮ Weniger heftig?

◮ Die Größe des Speichers wird eingeschränkt.

◮ Die Zugriffsmöglichkeiten auf den Speicher werden

eingeschränkt.

Kellerautomaten 5/56


Beispiele für Speicher mit Beschränkungen

◮ Beispiel: Zähler, die in- und dekrementiert werden können; die

Steuereinheit kann aber nur in Abhängigkeit davon, ob der

Zählerinhalt 0 ist oder nicht, im Programm verzweigen.

◮ Kellerautomaten: in jedem Schritt kann nur auf das zuletzt

abgespeicherte Datum zurückgegriffen werden.

◮ Überlegen Sie sich noch andere interessant aussehende

Zugriffsbeschränkungen!

Kellerautomaten 6/56


4.3 Definition

nichtdeterministischer Kellerautomat (NKA) besteht aus endlicher

Steuereinheit, Eingabeband und Keller(speicher).

· · ·

Eingabeband

endliche

Steuereinheit

Keller

.

◮ Eingabealphabet X

◮ Kelleralphabet Y

◮ Anfangskellersymbol y0 ∈ Y

◮ endliche Zustandsmenge Z

◮ Anfangszustand z0 ∈ Z

◮ Menge F ⊆ Z akzept. Zustände

◮ Überführungsfunktion

f : Z × Y × (X ∪ {ε}) → 2Z×Y ∗

Kellerautomaten 7/56


Arbeitsweise

Ist ein NKA in Zustand z und liest Kellersymbol y, kann er

„entscheiden“, ob ein Eingabesymbol gelesen wird oder nicht.

◮ kein Eingabesymbol: f (z, y, ε) ist (unter Umständen leere)

Menge von möglicher „Aktionen“ (z ′ , v) ∈ Z × Y ∗ .

Dabei ist z ′ neuer Zustand und v Wort neuer Kellersymbole

(letztes Symbol von v zuunterst, . . . , erstes Symbol zuoberst

gespeichert)

◮ Eingabesymbol: f (z, y, x) ist (unter Umständen leere) Menge

von möglichen „Aktionen“ (z ′ , v) ∈ Z × Y ∗ vor für den Fall,

dass das Eingabesymbol gerade x ist.

Kellerautomaten 8/56


Keller soll nicht leer werden

Immer, wenn das Kelleranfangssymbol y0 aus dem Keller gelesen

wird, soll es auch wieder zuunterst auf den Keller gelegt werden,

d. h. in diesem Fall muss bei jeder „Aktion“ (z ′ , v) das Wort v mit

y0 beginnen.

Kellerautomaten 9/56


4.4 Definition

deterministischer Kellerautomat (DKA): wie NKA, muss aber den

folgenden Einschränkungen genügen:

◮ z und y bestimmen eindeutig,

ob Eingabesymbol gelesen wird oder nicht:

Entweder f (z, y, ε) = ∅ oder für alle x ∈ X ist f (z, y, x) = ∅.

◮ Wenn f (z, y, ε) = ∅, dann

enthält f (z, y, x) für alle x ∈ X genau eine Aktion (z ′ , v).

◮ Wenn f (z, y, ε) = ∅, dann

enthält es genau eine Aktion (z ′ , v).

Kellerautomaten 10/56


4.5 Definition

Die von einem KA K erkannte Sprache ist die Menge aller

Eingabewörter w mit der folgenden Eigenschaft:

Wenn man K mit w als Eingabe startet und mit einem Keller, der

nur das Kelleranfangssymbol enthält, dann gibt es für K

(mindestens) eine Berechnung, bei der

◮ nach einigen Schritten alle Eingabesymbole gelesen sind und

◮ die Steuereinheit in einem akzeptierenden Zustand ist.

Kellerautomaten 11/56


4.6 Beispiel

◮ Überprüfe, ob ein Eingabewort w ∈ X ∗ = {0, 1} ∗

die Form 0 k 1 k hat.

◮ Dieses Problem kann nicht von einem endlichen Akzeptor

gelöst werden.

◮ Wie kann ein Kellerautomat vorgehen?

Kellerautomaten 12/56


4.6 Beispiel

◮ Überprüfe, ob ein Eingabewort w ∈ X ∗ = {0, 1} ∗

die Form 0 k 1 k hat.

◮ Dieses Problem kann nicht von einem endlichen Akzeptor

gelöst werden.

◮ Wie kann ein Kellerautomat vorgehen?

◮ Idee:

◮ erste Worthälfte einkellern,

◮ dann wieder auskellern und

◮ mit der zweiten Worthälfte vergleichen

Kellerautomaten 12/56


4.6 Beispiel (2)

Ist zum Beispiel das Eingabewort 00001111, dann werden

nacheinander dessen Symbole gelesen und die durchlaufenen

Zustände und Kellerinhalte sind:

z0 0 z0 0 z0 0 z0 0 z0 1 z1 1 z1 1 z1 1 z1 ε z+

* 0 0 0 0 0 0 0 * *

* 0 0 0 0 0 *

* 0 0 0 *

* 0 *

*

Kellerautomaten 13/56


4.6 Beispiel (3)

◮ Kelleralphabet Y = {*, 0}

◮ Kelleranfangssymbol *

◮ Zustandsmenge Z = {z0, z1, z+, z−}

◮ z0 sei Anfangszustand

◮ nur ein akzeptierender Zustand: F = {z+}

z y x z ′ v

z0 * 0 z0 0*

z0 0 0 z0 00

z0 0 1 z1 ε

z1 0 1 z1 ε

z1 * ε z+ *

sonst z y ε z− y

Kellerautomaten 14/56


Alternative Darstellung

gelesene neuer neuer

Eingabe Zustand Kellerinhalt

z0 *

0 z0 0*

00 z0 00*

000 z0 000*

0000 z0 0000*

00001 z1 000*

000011 z1 00*

0000111 z1 0*

00001111 z1 *

00001111 z+ *

Kellerautomaten 15/56


4.7 Definition

◮ Für w ∈ A ∗ bezeichne w R das Spiegelbild von w.

◮ Also:

ε R = ε

∀x ∈ A ∀w ∈ A ∗ : (xw) R = w R x

◮ Allgemein: (w1w2) R = w R 2 w R 1

Kellerautomaten 16/56


4.8 Beobachtungen

◮ Ein Wort v mit der Eigenschaft v R = v heißt Palindrom.

◮ zum Beispiel: RELIEFPFEILER oder

SAIPPUAKAUPPIAS (finnisch: Seifenhändler)

◮ (ww R ) R = ww R

◮ D. h.: Jedes Wort der Form v = ww R ist ein Palindrom,

und zwar gerader Länge.

◮ Und: Jedes Palindrom gerader Länge hat die Form ww R .

◮ Palindrome ungerader Länge?

Kellerautomaten 17/56


4.9 Beispiel

Gesucht: Kellerautomat für Lpal = {ww R | w ∈ {a, b} ∗ }

Beispieleingabe: abaaaaba

Kellerautomaten 18/56


4.9 Beispiel

Gesucht: Kellerautomat für Lpal = {ww R | w ∈ {a, b} ∗ }

Beispieleingabe: abaaaaba

zi a zi b zi a zi a zi ε zo a zo a zo b zo a zo ε z+

* a b a a a a b a * *

* a b a a b a *

* a b b a *

* a a *

* *

Kellerautomaten 18/56


4.9 Beispiel (2)

Z = {zi, zo, z−, z+}, Anfangszustand zi, F = {z+}

z y x z ′ v

zi * a zi a*

zi * b zi b*

zi a a zi aa

zi a b zi ba

zi b a zi ab

zi b b zi bb

zi a ε zo a

zi b ε zo b

zo a a zo ε

zo a b z− ε

zo b a z− ε

zo b b zo ε

zo * ε z+ *

in allen anderen Fällen z y ε z y

Kellerautomaten 19/56


4.11 Mitteilung

◮ Lpal kann man nur mit nichtdeterministischen Kellerautomaten

erkennen.

◮ Es gibt keinen deterministischen, der es tut.

◮ Beachte: Bei Kellerautomaten ist die Erkennungsmächtigkeit

von deterministischen und nichtdeterministischen

Kellerautomaten verschieden.

◮ Bei endlichen Automaten war sie gleich.

Kellerautomaten 20/56


4.12 Mitteilung

◮ Es gibt formale Sprachen, die auch von keinem

nichtdeterministischen Kellerautomaten erkannt werden

können.

◮ Beispiel:

L = {0 k 1 k 2 k | k ∈ N}

Kellerautomaten 21/56


Kellerautomaten

Kontextfreie Grammatiken

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken

Kontextfreie Grammatiken 22/56


Inhalt

◮ Definition

◮ Links-/Rechtsableitungen

◮ Ableitungsbäume

◮ ein- und mehrdeutige Grammatiken

◮ Syntaxanalyse: erste Ansätze

Kontextfreie Grammatiken 23/56


4.13 Definition

◮ kontextfreie Grammatik oder Typ-2-Grammatik (T2G):

Alle Produktionen sind von der Form

X → w mit X ∈ N und w ∈ (N ∪ T ) ∗

◮ kontextfreie Sprache: von T2G erzeugbar.

Kontextfreie Grammatiken 24/56


4.14–4.16 Beispiele

◮ viele

◮ verboten ist z. B. so etwas wie XB → Q

◮ G = ({X , Y0, Y1}, {0, 1}, X , P) mit Produktionen

P = {X → 0Y0|1Y1, Y0 → X 0, Y1 → X 1}

◮ Beachte: G ist nicht von Typ 3!

◮ G = ({S}, {(, )}, S, {S → ε|(S)|SS}

Kontextfreie Grammatiken 25/56


4.17 Definition

◮ Ableitungsschritt uXu ′ ⇒ uwu ′ mit Produktion X → w heißt

Linksableitungsschritt, falls u ∈ T ∗ .

◮ Geschrieben: uXu ′ ℓ ⇒ uwu ′ .

◮ w0 ⇒ w1 ⇒ · · · ⇒ wk ist eine Linksableitung(sfolge) falls

w0 ℓ ⇒ w1 ℓ ⇒ · · · ℓ ⇒ wk.

◮ Geschrieben: w0 ℓ ⇒ ∗ wk.

◮ Analog: Rechtsableitungsschritt r ⇒ und Rechtsableitung r ⇒ ∗ .

Kontextfreie Grammatiken 26/56


4.18 Beispiel

◮ G = ({S}, {(, )}, S, {S → ε|(S)|SS}.

◮ Betrachte: S ⇒ SS ⇒ S(S) ⇒ (S) ⇒ ()

◮ keine Linksableitung: zweiter Schritt falsch

◮ keine Rechtsableitung: dritter Schritt falsch

◮ Linksableitung: S ⇒ SS ⇒ S ⇒ (S) ⇒ ()

◮ Rechtsableitung: S ⇒ SS ⇒ S(S) ⇒ S() ⇒ ()

Kontextfreie Grammatiken 27/56


4.19 Definition

◮ Ableitungsbaum zu einer Ableitung X ⇒ ∗ w:

◮ Graph, der Baum ist, und

◮ dessen Knoten beschriftet sind

mit Nichtterminalsymbolen, Terminalsymbolen oder ε

◮ Aufbau des Baumes:

◮ Die Wurzel des Baumes ist mit X beschriftet.

◮ Die Blätter des Baumes von links nach rechts ergeben w.

◮ Gehört zu einer Ableitung X ⇒ ∗ wYw ′ der Ableitungsbaum

B ′ , so ergibt sich der Ableitungsbaum B zu

X ⇒ ∗ wYw ′ ⇒ wvw ′ mit zuletzt angewendeter Produktion

Y → v daraus, indem an das mit Y beschriftete Blatt von T ′

Nachfolgeknoten angehängt werden, die mit den Symbolen von

v beschriftet sind.

Kontextfreie Grammatiken 28/56


4.20 Beispiel

◮ S ⇒ SS ⇒ S(S) ⇒ (S) ⇒ ()

◮ schrittweiser Aufbau des Ableitungsbaums:

S S

S S

S

S S

( S )

S

ε

S

S

( S )

S

ε

S

S

( S

Kontextfreie Grammatiken 29/56

ε

)


4.21 Beobachtung

◮ Ableitungsbaum ist „allgemeiner“ als Ableitung

◮ Die Ableitungen

und

S ⇒ SS ⇒ S ⇒ (S) ⇒ ()

S ⇒ SS ⇒ S(S) ⇒ S() ⇒ ()

liefern den gleichen Ableitungsbaum.

Kontextfreie Grammatiken 30/56


4.22 Beobachtung

◮ Aus jedem Ableitungsbaum ergibt sich genau eine

Linksableitung

◮ und analog genau eine Rechtsableitung.

◮ Also: Zu jeder Ableitung gibt es eine „äquivalente“ Links-

(bzw. Rechts-)ableitung.

Kontextfreie Grammatiken 31/56


4.23 Definition

◮ Typ-2-Grammatik ist mehrdeutig, falls es für ein Wort zwei

verschiedene Ableitungsbäume (Linksableitungen,

Rechtsableitungen) gibt.

◮ Sonst heißt die Grammatik eindeutig.

◮ Eine kontextfreie Sprache ist (inhärent) mehrdeutig, falls jede

sie erzeugende T2G mehrdeutig ist.

Kontextfreie Grammatiken 32/56


4.24 Beispiel

◮ G = ({S}, {(, )}, S, {S → ε|(S)|SS} ist mehrdeutig.

◮ 2 Linksableitungen für das Wort ()()():

S ℓ ⇒ SS ℓ ⇒ SSS ℓ ⇒ ∗ ()SS ℓ ⇒ ∗ ()()() und

S ℓ ⇒ SS ℓ ⇒ (S)S ℓ ⇒ ∗ ()()S ℓ ⇒ ∗ ()()()

Kontextfreie Grammatiken 33/56


4.24 Beispiel (2)

◮ verschiedene Ableitungsbäume:

S

( S

ε

)

S

S

( S

ε

S

)

S

( S

ε

)

S

( S

ε

)

S

S

( S

◮ Die erzeugte formale Sprache ist aber nicht inhärent

mehrdeutig.

◮ Eindeutige Grammatik:

G = ({S, T }, {(, )}, S, {S → ε|ST , T → (S)}.

ε

)

S

S

( S

Kontextfreie Grammatiken 34/56

ε

)


4.25 Mitteilung

◮ Es gibt inhärent mehrdeutige kontextfreie Sprachen

◮ Beispiel: Jede kontexfreie Grammatik für die Sprache

L = {a i b j c k | i = j oder j = k oder i = k}

muss mehrdeutig sein.

◮ Beweis: nicht ganz einfach; das überlassen wir den Spezialisten

. . .

◮ Übersetzerbau: man will eindeutige Grammatiken

◮ ansonsten bekommt man Probleme wie z. B. mit

if C then if D then X else Y

Kontextfreie Grammatiken 35/56


Kellerautomaten

Kontextfreie Grammatiken

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 36/56


Inhalt

◮ erster Ansatz: Top-Down-Syntaxanalyse

◮ modifizierte Kellerautomaten

◮ alternativer Ansatz: Bottom-Up-Syntaxanalyse

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 37/56


4.26 Satz

Für jede formale Sprache L sind beiden folgenden Aussagen

äquivalent:

◮ L kann von einem nichtdeterministischen Kellerautomaten

erkannt werden.

◮ L kann von einer kontextfreien Grammatik erzeugt werden.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 38/56


4.27 Beweisidee

Wir beschränken uns auf die folgende Richtung:

Wähle

Gegeben: kontextfreie Grammatik G = (N, T , X0, P)

Gesucht: Kellerautomat K mit L(K) = L(G).

◮ Z = {z0, z, z+}

◮ Y = {*} ∪ T ∪ N

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 39/56


4.27 Beweisidee (2)

Die Arbeitsweise von K wird durch die folgenden Aktionen

beschrieben:

◮ Am Anfang: f (z0, *, ε) = {(z, X0*)}

◮ wenn oben auf dem Keller ein Nichtterminalsymbol X ∈ N:

„Produktionsschritt“ für Produktion X → w:

◮ (z, w) ∈ f (z, X , ε)

◮ kein Eingabesymbol gelesen

◮ wenn oben auf dem Keller ein Terminalsymbol x ∈ T :

„Leseschritt“ für x ∈ T :

◮ (z, ε) ∈ f (z, x, x)

◮ Für x = x ′ gibt es aber keine Aktion: f (z, x, x ′ ) = ∅.

◮ Am Ende: f (z, *, ε) = {(z+, *)}

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 40/56


4.27 Beweisidee (2)

◮ Unterscheidung, ob ein Produktionsschritt oder Leseschritt:

deterministisch

◮ Welcher Leseschritt gegebenenfalls: deterministisch

◮ Wahl des Produktionsschrittes: nichtdeterministisch,

da mehrere Produktionen mit der gleichen linken Seite möglich.

Es gilt:

◮ Wenn es für ein Wort w eine Linksableitung in G gibt, dann

gibt es eine Berechnung von K, nach der w akzeptiert wird.

◮ Kann umgekehrt K ein Wort w akzeptieren, dann muss es eine

Linksableitung dafür in G geben.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 41/56


4.28 Beispiel

Grammatik G = ({S}, {(, )}, S, {S → ε|(S)|SS}

Linksableitung

S ⇒ SS ⇒ (S)S ⇒ ((S))S ⇒ (())S ⇒ (())(S) ⇒ (())().

mögliche Arbeitsweise des Kellerautomaten für die Eingabe (())():

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 42/56


4.28 Beispiel (2)

gelesene neuer neuer verwendete

Eingabe Zustand Kellerinhalt Produktion

z0 *

z

z

z

S*

SS*

(S)S*

S → SS

S → (S)

(

(

z

z

S)S*

(S))S*

S → (S)

((

((

z

z

S))S*

))S*

S → ε

(() z )S*

(())

(())

z

z

S*

(S)*

S → (S)

(())(

(())(

z

z

S)*

)*

S → ε

(())() z *

(())() z+ *

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 43/56


4.28 Beispiel (3)

eine andere Arbeitsweise des Kellerautomaten für die Eingabe

(())():

gelesene neuer neuer verwendete

Eingabe Zustand Kellerinhalt Produktion

z0 *

z

z

z

S*

SS*

(S)S*

S → SS

S → (S)

(

(

z

z

S)S*

(S))S*

S → (S)

((

((

z

z

S))S*

(S)))S*

S → (S)

An dieser Stelle ist der Kellerautomat in einer Sackgasse,

weil nächstes Eingabesymbol ), aber auf dem Keller ( liegt!

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 44/56


4.29 Top-down-Syntaxanalyse

◮ Kellerautomat „konstruiert“ Ableitungsbaum von oben nach

unten.

◮ α: bereits gelesener Teil der Eingabe

ω: noch ausstehender Teil der Eingabe

κ: Kellerinhalt

◮ Situation unmittelbar vor Produktionsschritt:

schon klar: S ℓ ⇒ ∗ ακ

noch zu prüfen: κ ℓ ⇒ ∗ ω?

gefunden

S

κ

α ω

gesucht

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 45/56


4.30

Bei der Top-down-Syntaxanalyse „erzeugt“ der Kellerautomat eine

Linksableitung.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 46/56


4.31

Nichtdeterministische Kellerautomaten sind unpraktisch.

Mögliche Auswege:

◮ simuliere den Kellerautomaten deterministisch

◮ systematische Suche nach einer akzeptierenden Berechnung

◮ Vorsicht: unendlichen Rekursion droht.

◮ Außerdem: Zeitaufwand evtl. zu groß

◮ Backtracking erschwert Aktualisierung von Datenstrukturen

◮ no no no

◮ schränke Kellerautomaten ein

◮ Extremfall: nur deterministische Variante

◮ Günstiger: erlaube Vorausschau im Eingabestrom

◮ vergiss Kellerautomaten und mache die Syntaxanalyse anders

◮ auch erzwungen, wenn die Syntax nicht kontextfrei

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 47/56


4.32 Bottom-up-Syntaxanalyse

◮ Alternative zu Top-down-Syntaxanalyse

◮ Zunächst wieder nur nichtdeterministische Kellerautomaten

◮ Frage:

Wozu Bottom-up-Syntaxanalyse, wenn wieder

Nichtdeterminismus und nur die gleiche

Erkennungsmächtigkeit?

◮ Antwort:

Bei Einschränkung auf deterministische Kellerautomaten mit

Vorausschau liefern Top-down- bzw. Bottom-up-Syntaxanalyse

verschiedene Leistungsfähigkeit.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 48/56


4.33 Modifizierte Kellerautomaten

◮ Kellerautomat kann in einem Schritt mehrere oberste

Kellersymbole lesen.

◮ Mit „normalem“ Kellerautomaten simulierbar, erleichtert aber

die Beschreibung wesentlich.

◮ Beim „Auslesen“ eines Wortes, dessen Symbole oben auf dem

Keller liegen, ist das oberste Kellersymbol das letzte

Wortsymbol, das zweitoberste Kellersymbol das vorletzte

Wortsymbol, usw.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 49/56


4.34 Beispiel

◮ G = ({S}, {(, )}, S, {S → ε|(S)|SS}

◮ Leseschritt:

◮ Das nächste Eingabesymbol wird gekellert.

◮ Reduktionsschritt:

◮ Oberste Kellersymbole bilden die rechte Seite einer Produktion,

◮ die durch zugehörige linke Seite ersetzt wird.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 50/56


4.34 Beispiel (2)

neuer neuer noch nicht ge- verwendete

Kellerinhalt Zustand lesene Eingabe Produktion

* z0 (())()

*( z ())()

*((

*((S

z

z

))()

))()

S → ε

*((S)

*(S

z

z

)()

)()

S → (S)

*(S)

*S

z

z

()

()

S → (S)

*S(

*S(S

z

z

)

)

S → ε

*S(S) z

S → (S)

*SS z

*S z

*S z+

S → SS

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 51/56


4.35 Bottom-up-Syntaxanalyse

Kellerautomat versucht, rückwärts eine Rechtsableitung des

Eingabewortes gemäß der zu Grunde gelegten Grammatik zu finden.

◮ schon klar: κ r ⇒ ∗ α

◮ noch zu prüfen: S r ⇒ ∗ κω

gefunden

κ

S

α ω

gesucht

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 52/56


4.35 Bottom-up-Syntaxanalyse (2)

◮ Leseschritt:

das nächste Eingabesymbol wird gelesen und gekellert.

Das erhält die Eigenschaft κ r ⇒ ∗ α.

◮ Reduktionsschritt:

Kellerautomat ersetzt rechte Seite einer Produktion oben auf

dem Keller durch linke Seite.

Ist κ = κ ′ γ und X → γ benutzte Produktion, gilt:

κ ′ X r ⇒ κ ′ γ = κ r ⇒ ∗ α.

◮ Ziel:

◮ κ = S und

◮ die gesamte Eingabe w gelesen, also ω = ε.

◮ Dann S = κ r ⇒ ∗ α = w.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 53/56


4.36

Der Kellerautomat findet bei Bottom-up-Syntaxanalyse die

Produktionen einer Rechtsableitung „von hinten nach vorne“.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 54/56


4.37

◮ „Freiheitsgrade“ bei der Bottom-up-Syntaxanalyse:

◮ Es kann sowohl ein Lese- als auch ein Reduktionsschritt

möglich sein.

◮ Bei einem Reduktionsschritt können unterschiedlich lange

Kellerenden reduziert werden.

◮ Bei einem Reduktionsschritt kann unter mehreren

Produktionen mit gleicher rechter Seite ausgewählt werden.

◮ Wenn man einen deterministischen Algorithmus will, muss man

also die Grammatik geeignet konstruieren.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 55/56


Zusammenfassung

◮ Nichtdeterministische Kellerautomaten und kontextfreie

Grammatiken sind äquivalente Beschreibungsmittel.

◮ Bei Top-Down-Syntaxanalyse wird eine Linksableitung von

vorne nach hinten konstruiert.

◮ Bei Bottom-Up-Syntaxanalyse wird eine Rechtsableitung von

hinten nach vorne konstruiert.

Zusammenhang von Kellerautomaten und Typ-2-Grammatiken 56/56

Weitere Magazine dieses Users
Ähnliche Magazine