• Keine Ergebnisse gefunden

Aufgabe 1 Lösung a) Zuerst kann man nullable berechnen: nullable(

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 1 Lösung a) Zuerst kann man nullable berechnen: nullable("

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Aufgabe 1 Lösung

a) Zuerst kann man nullable berechnen: nullable(S)=false (direkt), nullable(A)=true (direkt), nullable(B)= true (weilBAAund nullable(A))

Wer sich den Algorithmus anschaut, sieht, dass die FIRST-Berechnung nicht von den FOLLOW-Mengen ab- hängt. Wir können also im nächsten Schritt alle FIRST-Mengen berechnen. Wir gehen in einer etwas anderen Reihenfolge durch die Produktionen, um schneller zum Ziel zu kommen:

1. BbBc: FIRST[B]← {b}.

2. ABAa: FIRST[A]←FIRST[B]={b}.

3. ABAa: FIRST[A]←FIRST[A]∪ {a}={a,b}, da nullable(B) und nullable(A).

4. BAA: FIRST[B]←FIRST[B]∪FIRST[A]={a,b} 5. SA#: FIRST[S]←FIRST[A]={a,b}

6. SA#: FIRST[S]←FIRST[S]∪ {#}={a,b, #}, da nullable(A) Ergebnis: FIRST[A] ={a,b}, FIRST[B] ={a,b}, FIRST[S] ={a,b, #}.

Die FOLLOW-Mengen lassen sich nun ebenfalls ermitteln. Es werden nur Schritte angegeben, die die Mengen verändern:

1. SA#: FOLLOW[A]← {#}.

2. ABAa: FOLLOW[B]←FOLLOW[B]∪FIRST[A] ={a,b} 3. ABAa: FOLLOW[A]←FOLLOW[A]∪ {a}={a, #} 4. BbBc: FOLLOW[B]←FOLLOW[B]∪ {c}={a,b,c} 5. BAA: FOLLOW[A]←FOLLOW[A]∪FIRST[A] ={a,b, #} 6. BAA: FOLLOW[A]←FOLLOW[A]∪FOLLOW[B] ={a,b,c, #} Endergebnis:

nullable FIRST FOLLOW S false a, b, #

A true a, b a, b, c, # B true a, b a, b, c

b) Sie enthalten nicht das leere Wort. Mengen nach der Vorlesung: FIRST1(A) ={ε,a,b}, FIRST1(B) ={ε,a,b}, FIRST1(S) ={a,b, #},

c) Wir benutzen das Lemma aus der Vorlesung. Für die ProduktionABAagilt:

FIRST1(BAa)⊕1FOLLOW1(A)

=FIRST1(B)∪FIRST1(A)∪ {a} ⊕1FOLLOW1(A)

={ε,a,b} ⊕1{a,b,c, #}

={a,b,c, #}

für die ProduktionAεgilt:

FIRST1(ε)⊕1FOLLOW1(A)={ε} ⊕1{a,b,c, #}={a,b,c, #}

Da die Schnittmenge nicht leer ist, folgt daraus, dassΓ1nicht LL(1) ist.

d)

foreach terminal symbola FIRST[a]← {a} repeat

foreach productionXα1α2· · ·αk

FIRST[X]←FIRST[X]∪FIRST[α1]

FOLLOW[αk]←FOLLOW[αk]∪FOLLOW[X] foreachifrom 1 tok−1

FOLLOW[αi]←FOLLOW[αi]∪FIRST[αi+1]

untilFIRST, FOLLOW, and nullable did not change in this iteration

1

Referenzen

ÄHNLICHE DOKUMENTE

Überführen Sie die Regeln für die Realisierung der Projekte im Abschnitt „Logische Verknüpfungen von Aussagen“ in eine algebraische Darstellung2. Transformieren Sie

Otto steht im Treppenhaus des H¨ olderlingeb¨ audes und l¨ auft die Treppen hoch und runter. Jedes Mal, wenn er eine Stufe hinaufsteigt, notiert er sich

Damit Otto am Ende wieder an der Anfangsposition steht, muss die Anzahl der ↑ im Wort gleich der Anzahl der

Die Verstärkung eines gegengekoppelten idealen OP

Das Hotel des Mathematikers David Hilbert hat jedoch unendlich viele Zimmer, die mit den nat¨ urlichen Zahlen durch- nummeriert sind (d.h. Eines Tages sind alle Zimmer belegt. Kann

d) Nein. Es kann sein, dass die gegebene Höhe einmal senkrecht auf der gegebenen Seite steht und einmal nicht. Dann können sich unterschiedliche Flächeninhalte ergeben.. e) Das

[r]

Aufgrund der Darstellung der Länder gibt die Grafik auch Informationen über die Verteilung der Weltbevölkerung und zeigt die Regionen der Erde, in denen das Wachstum am größten