Automaten, Formale Sprachen und Berechenbarkeit I
Automaten, Formale Sprachen und Berechenbarkeit I
Automaten, Formale Sprachen und Berechenbarkeit I
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).