www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Formale Sprachen" - LL(1)-Parser, FIRST-,FOLLOW-M.
LL(1)-Parser, FIRST-,FOLLOW-M. < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

LL(1)-Parser, FIRST-,FOLLOW-M.: Erzeugung der Follow-Mengen
Status: (Frage) überfällig Status 
Datum: 11:24 Mi 27.05.2009
Autor: RalU

Aufgabe
Hallo,
es geht darum, für folgende kontextfreie Grammatik die FIRST- und FOLLOW-Mengen aufzustellen:

[mm] G_{expr}: [/mm]

I'-> [mm] aI'|bI'|0I'|1I'|\varepsilon [/mm]
I-> aI'|bI'
F->( E )|I
[mm] T'->*FT'|\varepsilon [/mm]
T -> FT'
E'-> + [mm] TE'|\varepsilon [/mm]
E -> TE'


Ich habe zunächst die FIRST-Mengen erstellt:

[mm] FIRST(I')={a,b,0,1,\varepsilon} [/mm]
FIRST(I)={a,b}
FIRST(F)={(,a,b}
[mm] FIRST(T')={*,\varepsilon} [/mm]
FIRST(T)={(,a,b}
[mm] FIRST(E')={+,\varepsilon} [/mm]
FIRST(E)={c,a,b}

Dann, wurde vorgegeben, die FIRST-Mengen für die rechten Seiten der Grammatik zu erstellen, wobei nur die Nichtterminale mit mehr als einer rechten Seite interessieren:

FIRST(+TE')={+}
[mm] FIRST(\varepsilon)={\varepsilon} [/mm]
FIRST(*FT')={*}
[mm] FIRST(\varepsilon)={\varepsilon} [/mm] Warum eigentlich nochmal?
FIRST((E))={(}
FIRST(I)={a,b}
FIRST(aI')={a}
FIRST(bI')={b}

Diese FIRST-Mengen sollten laut meiner Vorgaben so stimmen.

Mein Problem liegt bei der jetzt folgenden Erstellung der FOLLOW-Mengen, wobei folgendermaßen vorgegangen werden soll:
1) Nehme $ zu FOLLOW(S) hinzu
("$"entspr. Sonderzeichen für das Ende der Eingabe)
2) Falls A -> [mm] \alphaB\beta [/mm] nehme [mm] FIRST(\beta)\{\varepsilon} [/mm] zu FOLLOW(B) hinzu
3) Falls A -> [mm] \alphaB [/mm] oder A -> [mm] \alphaB\beta [/mm] mit [mm] \varepsilon \in FIRST(\beta), [/mm] nehme FOLLOW(A) zu FOLLOW(B) hinzu

Als Lösung sind die folgenden FOLLOW-Mengen angegeben:

FOLLOW(E)={$,)} Muss man immer beim letzten Nichtterminal der Grammatik, also hier dem E anfangen? Mir ist nicht klar, warum hier schon ")" hinzukommt...

FOLLOW(E')=FOLLOW(E) Kann ich nicht nachfollziehen...

FOLLOW(T) = FOLLOW(E) [mm] \cup [/mm] FIRST(E)/{ [mm] \varepsilon [/mm] }={$,),+} Wie kommt man auf das FOLLOW(E)?

FOLLOW(T')=FOLLOW(T) ist nicht klar

FOLLOW(F)=FIRST(T')/{ [mm] \varepsilon [/mm] } [mm] \cup [/mm] FOLLOW(T)={*,$,),+}
Wie kommt man auf FIRST(T')?

FOLLOW(I)=FOLLOW(F)
FOLLOW(I')=FOLLOW(I) ...werden mir ebenfalls nicht klar

Wer kann mir bei den Follow-Mengen helfen???
Gruß, Ralf

        
Bezug
LL(1)-Parser, FIRST-,FOLLOW-M.: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:20 Fr 29.05.2009
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]