27.11.2014 Aufrufe

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5. DETERMINISTISCH KONTEXTFREIE SPRACHEN 97<br />

- Die Grammatik ist eine LR(0)-Grammatik, wenn für kein Wort γ ∈ (V ∪ Σ) ∗ gilt:<br />

S ′ → .S<br />

<br />

γ E 1<br />

S ′ → .S<br />

<br />

γ E 2<br />

<strong>und</strong> E 1 <strong>und</strong> E 2 sind zwei verschiedene Elemente, die in Konflikt stehen.<br />

D.h. für kein lebensfähiges Präfix γ von G besteht ein shift/reduce- oder ein reduce/reduce-<br />

Konflikt.<br />

- Diese Bedingung können wir einfach überprüfen, indem wir den zugehörigen deterministischen<br />

<strong>Automaten</strong> konstruieren:<br />

✬<br />

S ′ 0<br />

→ .S<br />

S → .B<br />

B → .b<br />

B → .aB<br />

S → .C<br />

C → .c<br />

C → .aC<br />

✫<br />

✩✎<br />

☞ ✬ ✩<br />

S<br />

S ′ → S. 1<br />

4<br />

✍ ✌<br />

B → a.B<br />

✎ ☞<br />

✎ ☞<br />

S → B. 2 B → .b B<br />

B<br />

B → aB. 5<br />

✍ ✌ B → .aB ✍ ✌<br />

a C → a.C ✎ ☞<br />

C<br />

✎ ☞ C → .c C → aC. 6<br />

C<br />

S → C. 3<br />

✍ ✌<br />

C → .aC<br />

✍ ✌<br />

✪✎<br />

☞ ✫ ✪<br />

B → b. 7<br />

a<br />

b<br />

b<br />

c<br />

✍ ✌ ✎ ☞<br />

c<br />

C → c. 8<br />

✍ ✌<br />

Wenn in diesem deterministischen <strong>Automaten</strong> in irgendeinem Zustand zwei Elemente<br />

vorkommen, die in Konflikt stehen, dann ist die Grammatik nicht LR(0); andernfalls ist<br />

sie LR(0).<br />

Zusammenfassung: Entscheidungsverfahren für die LR(0)-Eigenschaft einer Grammatik G:<br />

- Konstruiere den endlichen <strong>Automaten</strong> für die lebensfähigen Präfixe von G; dieser Automat<br />

ist im allgemeinen wegen der ε-Übergänge nicht deterministisch.<br />

- Konstruiere den zugehörigen deterministischen endlichen <strong>Automaten</strong>.<br />

- Überprüfe, ob in einem Zustand zwei Elemente vorkommen, die in Konflikt stehen.<br />

· Wenn ja, dann ist G keine LR(0)-Grammatik!<br />

· Wenn nein, dann ist G eine LR(0)-Grammatik!<br />

Aus dem deterministischen <strong>Automaten</strong> für die lebensfähigen Präfixe läßt sich unmittelbar ein<br />

LR-Parser für die Grammatik konstruieren. Mit Hilfe des endlichen <strong>Automaten</strong> wird dabei entschieden,<br />

ob als nächstes eine shift-Aktion oder eine reduce-Aktion ausgeführt werden soll. Die<br />

Idee werden wir hier wieder nur anhand eines Beispiels vorstellen (etwas genauer werden wir<br />

uns die Konstruktion in der Übung ansehen: Blatt 10, Aufgabe 2).

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!