• Keine Ergebnisse gefunden

First1(T E0) First1(E0

N/A
N/A
Protected

Academic year: 2021

Aktie "First1(T E0) First1(E0"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨at Siegen

Lehrstuhl Theoretische Informatik Markus Lohrey

Compilerbau I SS 2019

Ubungsblatt 12¨

Aufgabe 1 Sei G= (N,{a, b}, P, S) mit {A, S} ⊆N. Sei I = [S aAb,{ab, aa}]

ein Item des erweiterten Topdown-Kellerautomaten f¨ur Gmit Lookahead 2.

Geben Sie den Lookahead f¨ur die Expansion-Schritte zu I an.

osung:

First2(b)2{ab, aa}={ba}

Seien außerdemA ε |adie einzigen Produktionen f¨urAinP. Geben Sie die Zeile der Vorausschautabelle f¨urI an.

osung:

Zu jeder Produktion Aα bestimmen wir First2(α)2{ba}:

Aε: First2(ε)2{ba}={ba}

Aa: First2(a)2{ba}={ab}

also erhalten wir folgende Vorausschautabelle:

aa ab ba bb a b ε

[S aAb,{ab, aa}] Aa Aε

Aufgabe 2 Sei G = ({E, E0, T},{id,+,h,i}, P, E), wobei P gegeben ist durch:

E T E0 E0 +T E0 |ε

T → hEi |id

1. Geben Sie First1 ur alle Nichtterminale von G an.

1

(2)

osung:

ur First1 ergibt sich folgendes Gleichungssystem:

First1(E) = First1(T E0)

First1(E0) = First1(+T E0)First1(ε) First1(T) = First1(hEi)First1(id)

Diese Aufgaben l¨ost man am besten durch ”Hinschauen”, anstatt den Algorithmus zur Berechnung der kleinsten L¨osung exakt durchzuf¨uhren.

Es gilt offensichtlich id First1(T). Außerdem gilt h ∈ First1(T), falls First1(E) 6= (was klar ist, da z.B. E T E0 id gilt). Insgesamt haben wir also schon mal First1(T) = {h, id}. Als n¨achstes sehen wir, dass ε First1(E0). Außerdem gilt + First1(E0), falls First1(T) 6= und First1(E0) 6= ∅. Insgesamt gilt also First1(E0) = {+, ε}. Zuletzt erhalten wir First1(E) = First1(T)1 First1(E0) ={+, id}.

2. Geben Sie Follow1 ur alle Nichtterminale von G an.

osung:

Hier geht man am besten ¨ahnlich wie bei First vor, was man bereits berechnet haben muss. Es ergibt sich folgendes Gleichungssystem f¨ur Follow1:

Follow1(E) = {ε} ∪First1(i)1Follow1(T)

Follow1(E0) = (First1(ε)1Follow1(E))(First1(ε)1Follow1(E0)) Follow1(T) = (First1(E0)1Follow1(E))

(First1(E0)1Follow1(E0))

Beachte, dass ε Follow1(E) gilt, weil E das Startsymbol ist. Aus der ersten Gleichung schließen wir, dass Follow1(E) = {ε,i}, falls Follow1(T)6= (was klar ist, weil E T E0 und First1(E0)6=∅). Aus der zweiten Gleichung schließen wir, dass Follow1(E0) = Follow1(E) = {ε,i}. F¨ur Follow1(T) erhalten wir also

Follow1(T) = First1(E0)1Follow1(E) = {ε,+} 1{ε,i}={ε,+,i}

3. Geben Sie die Vorausschautabelle f¨ur stark LL(1) an.

2

(3)

osung:

Wir berechnen First1(α)1Follow1(X) f¨ur jede Produktion X α:

E T E0: First1(T E0)1Follow1(E) ={id,h} 1{ε,+} 1{ε,i}

={id,h}

E0 +T E0: First1(+T E0)1Follow1(E0) ={+}

E0 ε: First1(ε)1Follow1(E0) = {ε} 1{ε,i}={ε,i}

T → hEi: First1(hEi)1Follow1(T) = {h}

T id: First1(id)1Follow1(T) = {id}

Damit erhalten wir folgende Vorausschautabelle f¨ur stark LL(1):

id + h i ε

E E T E0 E T E0

E0 E0 +T E0 E0 ε E0 ε

T T id T → hEi

Aufgabe 3 Sei G= ({S, A},{a,h,i}, P, S), wobei P gegeben ist durch:

S → hAi |ε Aa|ε

1. Geben Sie First1 ur alle Nichtterminale von G an.

osung:

ur First1 ergibt sich folgendes Gleichungssystem:

First1(S) = First1(hAi)First1(ε) First1(A) = First1(a)First1(ε)

Wir erhalten also First1(A) = {a, ε} und First1(S) ={h, ε}.

2. Geben Sie Follow1 ur alle Nichtterminale von G an.

osung:

ur Follow1 ergibt sich folgendes Gleichungssystem:

Follow1(S) ={ε}

Follow1(A) = First1(i)1Follow1(S) Wir erhalten also Follow1(S) ={ε} und Follow1(A) = {i}.

3

(4)

3. Geben Sie die Vorausschautabelle f¨ur stark LL(1) an.

osung:

Wir berechnen First1(α)1Follow1(X) f¨ur jede Produktion X α:

S → hAi: First1(hAi)1Follow1(S)

={h} 1{a, ε} 1{i} 1{ε}={h}

S ε: First1(ε)1Follow1(S) = {ε} 1{ε}={ε}

Aa: First1(a)1Follow1(A) ={a} 1{i}={a}

Aε: First1(ε)1Follow1(A) ={ε} 1{i}={i}

Damit ergibt sich folgende Vorausschautabelle f¨ur starkLL(1):

a h i ε

S S → hAi S ε

A Aa Aε

Aufgabe 4 Sei G= ({A, B},{a, b, c}, P, A), wobei P gegeben ist durch:

ABa|Bb B ε|c

Geben Sie eine LL(1)-GrammatikG0 mit L(G) = L(G0) an.

osung:

Es gilt, dass L(G) ={a, b, ca, cb}. Sei nun

G0 = ({A, B},{a, b, c}, P0, A), wobei P0 gegeben ist durch

AB |cB B a |b

Es gilt L(G) =L(G0) undG0 ist starkLL(1), denn f¨ur die Produktionen von A erhalten wir

First1(B)1Follow1(A) ={a, b}, First1(cB)1Follow1(A) = {c}.

4

Referenzen

ÄHNLICHE DOKUMENTE

Ein Elektron bewegt sich in einer Spulenwindung der H¨ ohe

c) Wieviele Schritte sind (ausgehend von dem in a) gew¨ ahlten Startwert) h¨ ochstens erforderlich, um eine Genauigkeit (welche Norm?) von ε = 10 −4

Exercise sheet for Numerik f ¨ur Differentialgleichungen auf Oberfl¨achen..

Eine Reflexion wird durch eine Antireflexbeschichtung unterdr¨ uckt, so dass die gesamte Intensit¨at in das Glas eintritt.. Zur n¨aherungs- weisen Berechnung der Reflexion als

Probiert man ein paar Anfangswerte x 0 aus, so stellt man fest, dass sich stets eine monotone

[r]

Ansatz vom Typ der rehten Seite\, um eine partikul are L osung zu

Pr¨ asenzaufgaben zu Speziel le Aspekte der Analysis Blatt X