Here you can ask questions and find or give answers to organizational, academic and other questions about studying computer science.

1.1k questions

1.3k answers

1.7k comments

556 users

0 votes
In der Aufgabe soll man die FOLLOW-Mengen berechnen mit den Regeln aus der Vorlesung (Folie112). Es ist mir nicht klar, was der Unterschied zwischen den letzten beiden Regeln ist. Wenn ich die Regeln für die Grammatikregel A -> +TA| verwende, verstehe ich auch nicht wie man auf FOLLOW(A) teilmenge von FOLLOW(A) kommt.

Vielen Dank im Voraus :)
in * TF "Emb. Sys. and Rob." by (200 points)

1 Answer

0 votes

Ich kann die Folien, die sie meinen, nicht finden, da das Kapitel in der Zwischenzeit aktualisiert worden ist. Generell, sucht man bei FOLLOW(A) die Symbole a ∈ T∪{$}, welche in irgendeiner Ableitung auf das Nichtterminalsymbol A folgen können. Dies wird durch folgende Regeln vollständig beschrieben, wobei S das Startsymbol ist:

  • $ ∈ FOLLOW(S)
  • Regel A → αBβ impliziert (FIRST(β) \ {ε}) ⊂ FOLLOW(B), da der Anfang von β auf B in dem Wort αBβ folgt
  • Regel A → αBβ mit ε ∈ FIRST(β) impliziert FOLLOW(A) ⊂ FOLLOW(B), da die Ableitung A → αBβ →* aB möglich ist, so dass alle Symbole, die auf A folgen können auch auf B folgen können
  • als Spezialfall β=ε erhält man A → αB, welcher damit auch FOLLOW(A) ⊂ FOLLOW(B) impliziert
Nun kann man damit beginnen, dass zunächst alle FOLLOW-Mengen leer sind, mit der Ausnahme von FOLLOW(S) = {$}. Dann muss man dafür sorgen, dass die obigen Regeln erfüllt werden. Wo immer die nicht der Fall sein sollte, muss man Symbole in eine FOLLOW-Menge aufnehmen, bis alle Regel erfüllt sind.
Alternativ dazu kann man auch ein Gleichungssystem aufstellen, mit dem man dann eine einfache Fixpunktiteration vornimmt. 
by (170k points)
Imprint | Privacy Policy
...