• Keine Ergebnisse gefunden

Wir betrachten f¨ ur das Parsen einen bottom-up-Ansatz, wobei die Reduktionen von links nach rechts angewendet werden.

N/A
N/A
Protected

Academic year: 2021

Aktie "Wir betrachten f¨ ur das Parsen einen bottom-up-Ansatz, wobei die Reduktionen von links nach rechts angewendet werden."

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

4.10 LR(k)-Grammatiken

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) Regeln:

S → A

A → E | A + E | A − E E → P | E ∗ P | E/P P → (A) | a

Wir betrachten f¨ ur das Parsen einen bottom-up-Ansatz, wobei die Reduktionen von links nach rechts angewendet werden.

Info IV 153/217

c

Ernst W. Mayr

(2)

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) Dabei k¨ onnen sich bei naivem Vorgehen allerdings Sackgassen ergeben, die dann aufgrund des Backtracking zu einem ineffizienten Algorithmus f¨ uhren:

Regeln:

S → A

A → E | A + E | A − E E → P | E ∗ P | E/P P → (A) | a

Ableitung:

a + a ∗ a P + a ∗ a E + a ∗ a A + a ∗ a S + a ∗ a

Sackgasse!

Info IV 153/217

c

Ernst W. Mayr

(3)

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) . . . oder auch

Regeln:

S → A

A → E | A + E | A − E E → P | E ∗ P | E/P P → (A) | a

Ableitung:

a + a ∗ a P + a ∗ a E + a ∗ a A + a ∗ a

A + P ∗ a

A + E ∗ a

A ∗ a

A ∗ P

A ∗ E

Sackgasse!

Info IV 153/217

c

Ernst W. Mayr

(4)

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) Zur Behebung des Problems f¨ uhren wir f¨ ur jede Ableitungsregel (besser hier: Reduktionsregel) einen Lookahead (der L¨ ange k) ein (in unserem Beispiel k = 1) und legen fest, dass eine

Ableitungsregel nur dann angewendet werden darf, wenn die n¨ achsten k Zeichen mit den erlaubten Lookaheads ¨ ubereinstimmen.

Info IV 153/217

c

Ernst W. Mayr

(5)

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) Produktion Lookaheads (der L¨ ange 1)

S → A

A → E +, −, ), A → A + E +, −, ), A → A − E +, −, ), E → P beliebig E → E ∗ P beliebig E → E/P beliebig P → (A) beliebig P → a beliebig

Info IV 153/217

c

Ernst W. Mayr

(6)

Beispiel 89 (Grammatik f¨ ur Arithmetische Ausdr¨ ucke) Damit ergibt sich

Produktion Lookaheads S → A

A → E +, −, ), A → A + E +, −, ), A → A − E +, −, ), E → P beliebig E → E ∗ P beliebig E → E/P beliebig P → (A) beliebig P → a beliebig

Ableitung:

a + a ∗ a P + a ∗ a E + a ∗ a A + a ∗ a

A + P ∗ a

A + E ∗ a

A + E ∗ P

A + E

A S

Info IV 4.10LR(k)-Grammatiken 153/217

c

Ernst W. Mayr

(7)

Definition 90

Eine kontextfreie Grammatik ist eine LR(k)-Grammatik, wenn man durch Lookaheads der L¨ ange k erreichen kann, dass bei einer Reduktion von links nach rechts in jedem Schritt h¨ ochstens eine Produktion/Reduktion anwendbar ist.

Korollar 91

Jede kontextfreie Sprache, f¨ ur die es eine LR(k)-Grammatik gibt, ist deterministisch kontextfrei.

Info IV 4.10LR(k)-Grammatiken 154/217

c

Ernst W. Mayr

(8)

Bemerkung:

Es gibt eine (im allgemeinen nicht effiziente) Konstruktion, um aus einer LR(k)-Grammatik, k > 1, eine ¨ aquivalente

LR(1)-Grammatik zu machen.

Korollar 92

Die folgenden Familien von Sprachen sind gleich:

die Familie DCFL, die LR(1)-Sprachen.

Info IV 4.10LR(k)-Grammatiken 155/217

c

Ernst W. Mayr

(9)

4.11 LL(k)-Grammatiken

Beispiel 93 (Noch eine Grammatik) Regeln:

S → A S → A

A → E | E + A A → EA 0 A 0 → +A | E → P | P ∗ E E → P E 0

E 0 → ∗E | P → (A) | a P → (A) | a

Wir betrachten nun f¨ ur das Parsen einen top-down-Ansatz, wobei die Produktionen in Form einer Linksableitung angewendet werden.

Info IV 156/217

c

Ernst W. Mayr

(10)

Beispiel 93 (Noch eine Grammatik) Regeln:

S → A

A → E | E + A E → P | P ∗ E P → (A) | a

Ableitung:

S A E P

a + a ∗ a

Sackgasse!

Info IV 156/217

c

Ernst W. Mayr

(11)

Beispiel 93 (Noch eine Grammatik)

Wir bestimmen nun f¨ ur jede Produktion A → α ihre

Auswahlmenge, das heißt die Menge aller terminalen Pr¨ afixe der L¨ ange ≤ k der von α ableitbaren Zeichenreihen.

Es ergibt sich (der Einfachheit lassen wir -Produktionen zu):

S → A {a, (}

A → EA 0 {a, (}

A 0 → +A {+}

A 0 → {), } E → P E 0 {a, (}

E 0 → ∗E {∗}

E 0 → {+, ), } P → (A) {(}

P → a {a}

Info IV 156/217

c

Ernst W. Mayr

(12)

Beispiel 93 (Noch eine Grammatik) Damit ergibt sich

S → A {a, (}

A → EA 0 {a, (}

A 0 → +A {+}

A 0 → {), } E → P E 0 {a, (}

E 0 → ∗E {∗}

E 0 → {+, ), } P → (A) {(}

P → a {a}

Ableitung:

S EA 0 aE 0 A 0

.. .

a + P E 0 A 0 .. .

a + a ∗ P E 0 A 0 .. .

a + a ∗ a

Info IV 4.11LL(k)-Grammatiken 156/217

c

Ernst W. Mayr

(13)

Bemerkungen:

1

Parser f¨ ur LL(k)-Grammatiken entsprechen der Methode des rekursiven Abstiegs (recursive descent).

2

LL(k) ist eine strikte Teilklasse von LR(k).

3

Es gibt L ∈ DCFL, so dass L 6∈ LL(k) f¨ ur alle k.

Info IV 4.11LL(k)-Grammatiken 157/217

c

Ernst W. Mayr

(14)

5. Kontextsensitive und Typ-0-Sprachen

5.1 Turingmaschinen

Turingmaschinen sind das grundlegende Modell, das wir f¨ ur Computer/Rechenmaschinen verwenden. Es geht auf Alan Turing (1912–1954) zur¨ uck.

Info IV 5.1 Turingmaschinen 158/217

c

Ernst W. Mayr

(15)

Definition 94

Eine nichtdeterministische Turingmaschine (kurz TM oder NDTM) wird durch ein 7-Tupel M = (Q, Σ, Γ, δ, q 0 , , F ) beschrieben, das folgende Bedingungen erf¨ ullt:

1

Q ist eine endliche Menge von Zust¨ anden.

2

Σ ist eine endliche Menge, das Eingabealphabet.

3

Γ ist eine endliche Menge, das Bandalphabet.

4

δ : Q × Γ → P(Q × Γ × {L, R, N }) ist die Ubergangsfunktion. ¨

5

q 0 ∈ Q ist der Startzustand.

6

∈ Γ \ Σ ist das Leerzeichen.

7

F ⊆ Q ist die Menge der (akzeptierenden) Endzust¨ ande.

Eine Turingmaschine heißt deterministisch, falls gilt

|δ(q, a)| ≤ 1 f¨ ur alle q ∈ Q, a ∈ Γ.

Info IV 5.1 Turingmaschinen 159/217

c

Ernst W. Mayr

(16)

Erl¨ auterung:

Intuitiv bedeutet δ(q, a) = (q 0 , b, d) bzw. δ(q, a) 3 (q 0 , b, d):

Wenn sich M im Zustand q befindet und unter dem

Schreib-/Lesekopf das Zeichen a steht, so geht M im n¨ achsten Schritt in den Zustand q 0 ¨ uber, schreibt an die Stelle des a’s das Zeichen b und bewegt danach den Schreib-/Lesekopf um eine Position nach rechts (falls d = R), links (falls d = L) bzw. l¨ asst ihn unver¨ andert (falls d = N ).

Info IV 5.1 Turingmaschinen 160/217

c

Ernst W. Mayr

(17)

Beispiel 95

Es soll eine TM angegeben werden, die eine gegebene Zeichenreihe aus {0, 1} + als Bin¨ arzahl interpretiert und zu dieser Zahl 1 addiert.

Folgende Vorgehensweise bietet sich an:

1

Gehe ganz nach rechts bis ans Ende der Zahl. Dieses Ende kann durch das erste Auftreten eines Leerzeichens gefunden werden.

2

Gehe wieder nach links bis zur ersten 0 und ¨ andere diese zu einer 1. Ersetze dabei auf dem Weg alle 1en durch 0.

Also:

δ(q 0 , 0) = (q 0 , 0, R) δ(q 1 , 1) = (q 1 , 0, L) δ(q 0 , 1) = (q 0 , 1, R) δ(q 1 , 0) = (q f , 1, N ) δ(q 0 , ) = (q 1 , , L) δ(q 1 , ) = (q f , 1, N ) Damit ist Q = {q 0 , q 1 , q f } und F = {q f }.

Info IV 5.1 Turingmaschinen 161/217

c

Ernst W. Mayr

(18)

Definition 96

Eine Konfiguration einer Turingmaschine ist ein Tupel (α, q, β) ∈ Γ × Q × Γ .

Das Wort w = αβ entspricht dem Inhalt des Bandes, wobei dieses rechts und links von w mit dem Leerzeichen gef¨ ullt sei. Der Schreib-/Lesekopf befindet sich auf dem ersten Zeichen von β . Die Startkonfiguration der Turingmaschine bei Eingabe x ∈ Σ entspricht der Konfiguration

(, q 0 , x) ,

d.h. auf dem Band befindet sich genau die Eingabe x ∈ Σ , der Schreib-/Lesekopf befindet sich ¨ uber dem ersten Zeichen der Eingabe und die Maschine startet im Zustand q 0 .

Info IV 5.1 Turingmaschinen 162/217

c

Ernst W. Mayr

(19)

Je nach aktuellem Bandinhalt und Richtung d ∈ {L, R, N } ergibt sich bei Ausf¨ uhrung des Zustands¨ ubergangs δ(q, β 1 ) = (q 0 , c, d) folgende ¨ Anderung der Konfiguration:

1

· · · α

n

, q, β

1

· · · β

m

) →

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

· · · α

n

, q

0

, cβ

2

· · · β

m

) falls d = N, n ≥ 0, m ≥ 1 (, q

0

, cβ

2

· · · β

m

) falls d = L,

n = 0, m ≥ 1 (α

1

· · · α

n−1

, q

0

, α

n

2

· · · β

m

) falls d = L,

n ≥ 1, m ≥ 1 (α

1

· · · α

n

c, q

0

, ) falls d = R,

n ≥ 0, m = 1 (α

1

· · · α

n

c, q

0

, β

2

· · · β

m

) falls d = R,

n ≥ 0, m ≥ 2 Der Fall m = 0 wird mittels β

1

= abgedeckt.

Info IV 5.1 Turingmaschinen 163/217

c

Ernst W. Mayr

(20)

Definition 97

Die von einer Turingmaschine M akzeptierte Sprache ist

L(M ) = {x ∈ Σ ; (, q 0 , x) → (α, q, β) mit q ∈ F, α, β ∈ Γ }

Info IV 5.1 Turingmaschinen 164/217

c

Ernst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

Hinten: Die Kinder zeigen, ohne sich umzudrehen mit ausgestreckten Armen nach hinten.. Kreuz und quer: Die Kinder

Lilli steht auf ihrem rechten Fuß und hebt ihre rechte Hand hoch. Emma steht auf ihrem linken Fuß und hebt ihre linke

Copyright: H-Faktor GmbH, Niekao Lernwelten, Dortmund Verantwortlich für den Inhalt: Udo Kiel Autorin: Jana Bredemeier, Zeichnungen: cliparts2go Niekao Lernwelten ® 07/2012 ;

Der grüne Kegel steht zwischen dem roten und dem gelben Kegel, wobei der Gelbe links und der Rote rechts steht.. Der rote Kegel steht links vom grünen Kegel und der gelbe Kegel

Ziehe Linien von den Gegenständen an an folgende Stellen: (Wenn du Lust hast, kannst du die Kärtchen auch ausschneiden und an die richtige Stelle legen).. Markiere das Ziel mit

Wie viele Personen gehen nach links und wie viele Personen gehen nach rechts?. Rechts

Nicht jeder Mann ist eine Kriegsgurgel, und nicht jede Frau kämpft für die Abrüstung.» Innerhalb ihrer Partei hat Brundtland hart gearbeit, um Frauen in die politische Arbeit

Das Iterationsmakro forall_inout_edges(vw,v) wird verwendet um über alle Kanten (v, w) , die von einem Knoten v ausgehen zu iterieren. Innerhalb dieser Iterationsschleife muss