www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

arnold74

Gepostet:
24.05.2010 14:27

Closure Set berechnen  
Hallo,
möchte/muss nun auch noch Closure Items ermitteln.
Wie würdest Du dort vorgehen:
Ich habe an folgendes gedacht:
Bsp: Grammatik
Item 0
E'->E
E->E+T
E->T
..
Item 1 durch Eingabe von E
E'->E.
E->E.+T
...
Item 2 durch Eingabe von +
E->E+.T
T->...
Ich habe an eine Ausgabe des Typs [(Int,Variabe,[Symbol],Symbol]] gedacht, dabei representiert Int den Counter für die Item-menge, Variable die Produktionsvariable,[Symbol] die Produktion und Symbol die Variable für die nächste ItemMenge. Leider scheitere ich schon beim Ansatz. Wie würdest Du dieses Problem angehen. Würde schon gerne das mit Listen machen. Könnte mir aber vorstellen, dass ein Tree (Baum) vielleicht besser geeignet ist!
danke
arnold
Zum Seitenanfang    
 
Siracusa

Gepostet:
25.05.2010 19:20

   
Hallo,

was soll das "Closure Set" denn sein? Ich vermute ja mal einen transitiven Abschluss, aber worüber?


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
arnold74

Gepostet:
25.05.2010 21:51

   
ja eine Art transitiver Abschluss. Ich möchte den LR(0)-Automat darstellen. Dabei muss ich die Hülle der Item-Mengen bilden. Wenn so zb: bei den Produktionen
E'->.E
E->.E+T
E->.T
T->.T*F
F->.(E)
F->.id . Dabei ist dies die Item-Menge I0, wenn I die Mengt E'->.E. Wenn ich nun ein E eingebe wandert der Punkt um eine stelle nach rechts und ich erhalte I1 mit den Produktionen
E'->E.
E->E.+T, dann nach Eingabe von + erhalte ich Item_menge I2 mit
E->E+.T
T->.T*F
T->.F
F->.(E)
F->.id .... Bei I2 sind es wieder mehr Produktionen,denn befindet sich der Punkt(Parser) vor einem Terminal, werden auch diese zur Item-Menge hinzugefügt.

danke auch für den Tipp von Concatmap,
arnold
Zum Seitenanfang