• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Siegen

Lehrstuhl Theoretische Informatik Markus Lohrey

Compilerbau I SS 2020

Ubungsblatt 11 ¨

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

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

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

L¨ osung:

First

2

(b)

2

{ab, aa} = {ba}

(b) Seien außerdem A → ε | a die einzigen Produktionen f¨ ur A in P . Geben Sie die Zeile der Vorausschautabelle f¨ ur I an.

L¨ osung:

Zu jeder Produktion A → α bestimmen wir First

2

(α)

2

{ba}:

A → ε : First

2

(ε)

2

{ba} = {ba}

A → a : First

2

(a)

2

{ba} = {ab}

also erhalten wir folgende Vorausschautabelle:

aa ab ba bb a b ε

[S → a•Ab, {ab, aa}] A → a A → ε

Aufgabe 2 Sei G = ({E, C, F }, {a, +, h, i}, P, E), wobei P gegeben ist durch:

E → F C C → +F C | ε F → hEi | a

(a) Geben Sie First

1

f¨ ur alle Nichtterminale von G an.

1

(2)

L¨ osung:

F¨ ur First

1

ergibt sich folgendes Gleichungssystem:

First

1

(E) = First

1

(F C )

First

1

(C) = First

1

(+F C ) ∪ First

1

(ε) First

1

(F ) = First

1

(hEi) ∪ First

1

(a) Diese Aufgaben l¨ ost man am besten durch

” Hinschauen“, anstatt den Algorithmus zur Berechnung der kleinsten L¨ osung exakt durchzuf¨ uhren.

Es gilt offensichtlich a ∈ First

1

(F ). Außerdem gilt h ∈ First

1

(F ), falls First

1

(E) 6= ∅ (was klar ist, da z.B. E → F C →

a gilt). Insgesamt haben wir also schon mal First

1

(F ) = {h, a}. Als N¨ achstes sehen wir, dass ε ∈ First

1

(C). Außerdem gilt + ∈ First

1

(C), falls First

1

(F ) 6= ∅ und First

1

(C) 6= ∅. Insgesamt gilt also First

1

(C) = {+, ε}. Zuletzt erhalten wir First

1

(E) = First

1

(F )

1

First

1

(C) = {h, a}.

(b) Geben Sie Follow

1

f¨ ur alle Nichtterminale von G an.

L¨ osung:

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

1

:

Follow

1

(E) = {ε} ∪ First

1

(i)

1

Follow

1

(F )

Follow

1

(C) = (First

1

(ε)

1

Follow

1

(E)) ∪ (First

1

(ε)

1

Follow

1

(C)) Follow

1

(F ) = (First

1

(C)

1

Follow

1

(E ))

∪ (First

1

(C)

1

Follow

1

(C))

Man beachte, dass ε ∈ Follow

1

(E ) gilt, weil E das Startsymbol ist.

Aus der ersten Gleichung schließen wir, dass Follow

1

(E) = {ε, i}, falls Follow

1

(F ) 6= ∅ (was klar ist, weil E → F C und First

1

(C) 6= ∅). Aus der zweiten Gleichung schließen wir, dass Follow

1

(C) = Follow

1

(E) = {ε, i}.

F¨ ur Follow

1

(F ) erhalten wir also

Follow

1

(F ) = First

1

(C)

1

Follow

1

(E) = {ε, +}

1

{ε, i} = {ε, +, i}.

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

2

(3)

L¨ osung:

Wir berechnen First

1

(α)

1

Follow

1

(X) f¨ ur jede Produktion X → α:

E → F C : First

1

(F C )

1

Follow

1

(E) = {a, h}

1

{ε, +}

1

{ε, i}

= {a, h}

C → +F C : First

1

(+F C)

1

Follow

1

(C) = {+}

C → ε : First

1

(ε)

1

Follow

1

(C) = {ε}

1

{ε, i} = {ε, i}

F → hEi : First

1

(hEi)

1

Follow

1

(F ) = {h}

F → a : First

1

(a)

1

Follow

1

(F ) = {a}

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

a + h i ε

E E → F C E → F C

C C → +F C C → ε C → ε

F F → a F → hEi

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

S → hAi | ε A → a | ε

(a) Geben Sie First

1

f¨ ur alle Nichtterminale von G an.

L¨ osung:

F¨ ur First

1

ergibt sich folgendes Gleichungssystem:

First

1

(S) = First

1

(hAi) ∪ First

1

(ε) First

1

(A) = First

1

(a) ∪ First

1

(ε)

Wir erhalten also First

1

(A) = {a, ε} und First

1

(S) = {h, ε}.

(b) Geben Sie Follow

1

f¨ ur alle Nichtterminale von G an.

L¨ osung:

F¨ ur Follow

1

ergibt sich folgendes Gleichungssystem:

Follow

1

(S) = {ε}

Follow

1

(A) = First

1

(i)

1

Follow

1

(S) Wir erhalten also Follow

1

(S) = {ε} und Follow

1

(A) = {i}.

3

(4)

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

L¨ osung:

Wir berechnen First

1

(α)

1

Follow

1

(X) f¨ ur jede Produktion X → α:

S → hAi : First

1

(hAi)

1

Follow

1

(S)

= {h}

1

{a, ε}

1

{i}

1

{ε} = {h}

S → ε : First

1

(ε)

1

Follow

1

(S) = {ε}

1

{ε} = {ε}

A → a : First

1

(a)

1

Follow

1

(A) = {a}

1

{i} = {a}

A → ε : First

1

(ε)

1

Follow

1

(A) = {ε}

1

{i} = {i}

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

a h i ε

S S → hAi S → ε

A A → a A → ε

4

Referenzen

ÄHNLICHE DOKUMENTE

Verwenden Sie anschließend den Algo- rithmus aus der Vorlesung, um einen DEA zu erhalten..

[r]

[r]

Bestimmen Sie die Funktionsgleichungen für diese drei Funktionen, und geben Sie die abschnittweise definierte Funktion f an, durch die die Quer- schnittsfläche des

b) Berechnen Sie die Nullstellen der Funktion. c) Bestimmen Sie die Koordinaten des Scheitelpunktes. d) Bestimmen Sie die Funktionsgleichung der Sekanten, die den Graphen von

Theoretische Informatik 1 Gewertete Aufgaben, Blatt 12. Abgabe ins Fach Ihrer/s Tutorin/s

Übungsaufgaben, Folien und weitere Hinweise zur Vorlesung finden Sie online

Geben Sie eine Grammatik an, welche genau diese Sprache erzeugt und nur rechts- und linkslineare Regeln enthält.. Zeigen Sie, dass Ihre Grammatik genau diese