Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3 Syntaktische Analyse<br />
S0 = { [S ′ → .S],<br />
[S → .L=R],<br />
[S → .R],<br />
[L → .∗R],<br />
[L → .id],<br />
[R → .L]}<br />
S1 = { [S ′ → S.]}<br />
S2 = { [S → L.=R],<br />
[R → L.]}<br />
S3 = { [S → R.]}<br />
S4 = { [L → ∗.R],<br />
[R → .L],<br />
[L → .∗R],<br />
[L → .id]}<br />
S5 = { [L → id.]}<br />
S6 = { [S → L=.R],<br />
[R → .L],<br />
[L → .∗R],<br />
[L → .id]}<br />
S7 = { [L → ∗R.]}<br />
S8 = { [R → L.]}<br />
S9 = { [S → L=R.]}<br />
Abbildung 3.20: Zustandsmenge des LR-DEA der Grammatik zur Beschreibung der<br />
C-Zuweisung aus Beispiel 43.<br />
Nach Anwendung des Verfahrens zur Berechnung des LR-DEAs auf Seite 92 erhalten<br />
wir die in Abbildung 3.20 angegebene Zustandsmenge (zur Verbesserung der Lesbarkeit<br />
lassen wir die Mengenklammern bei einelementigen Vorausschaumengen weg).<br />
Aufgr<strong>und</strong> der Differenzierung nach Vorausschaumengen werden die Zustände des LR-<br />
DEA in mehrere Zustände des LR(1)-Automaten aufgesplittet. Zum Beispiel wird der<br />
Zustand S4 aus Abbildung 3.20 in die Zustände I4 <strong>und</strong> I11 in Abbildung 3.21 aufgeteilt,<br />
deren Items dieselben Kerne, aber unterschiedliche Vorausschaumengen besitzen. Der<br />
LR(1)-Automat ist in Abbildung 3.22 dargestellt.<br />
Daher ergeben sich die folgenden Beziehungen zwischen LR(0)- <strong>und</strong> LR(1)-Items:<br />
S0 ∼ I0 S1 ∼ I1 S2 ∼ I2 S3 ∼ I3 S4 ∼ I4 <strong>und</strong> I11<br />
S5 ∼ I5 <strong>und</strong> I12 S6 ∼ I6 S7 ∼ I7 <strong>und</strong> I13 S8 ∼ I8 <strong>und</strong> I10 S9 ∼ I9<br />
Im LR-DEA in Abbildung 3.20 tritt das LR(0)-Item [R → .L] in den Zuständen S0<br />
<strong>und</strong> S4 auf. Durch das Shiften eines L gelangen wir aus beiden Zuständen in den<br />
Zustand S8. In Abbildung 3.21 unterscheiden sich die LR(1)-Items [R → .L, $] in<br />
I0 <strong>und</strong> [R → .L, {=, $}] in I4 durch ihre Vorausschaumengen. Aus I0 kann ein L-<br />
Übergang nach I10 erfolgen, aus I4 ein Übergang nach I8. Befinden wir uns also im<br />
Zustand I10, wissen wir eindeutig, daß wir aus I0 gekommen sind. Befinden wir uns<br />
im Zustand I8, sind wir aus I4 gekommen. Auf diese Weise enthalten die Zustände<br />
106