Gepostet: |
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 | |||||||||||
Gepostet: |
|||||||||||
Hallo, was soll das "Closure Set" denn sein? Ich vermute ja mal einen transitiven Abschluss, aber worüber? Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
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 | |||||||||||