LL(1) Grammatik für Taschenrechner |
10.10.2013, 06:24 | compilerfan | Auf diesen Beitrag antworten » |
LL(1) Grammatik für Taschenrechner Ich muss für ein Uni Projekt das Front-End für einen Compiler schreiben, der die Sprache eines Taschenrechners versteht. Den Scanner hab ich schon, jetzt hänge ich beim Parser fest. Es geht darum aus einer bestehenden Grammatik (ambiguous) eine LL(1) Grammatik zu machen, die auch "precedence" beherrscht. Die Ausgangslage war folgende: List -> List Expr T_comma | Expr T_comma Expr -> Expr T_times Expr | Expr T_div Expr | Expr T_plus Expr | Expr T_minus Expr | T_num | T_openparen Expr T_closeparen Und gemacht habe ich folgendes: List : Expr ',' List {printf("parsed expresion\n");} | ; Expr : Term EZ ; EZ : '+' Term EZ | '-' Term EZ | ; Term : Factor TZ ; TZ : '*' Factor TZ | '/' Factor TZ | ; Factor : 'n' | '(' Expr ')' ; Leider hänge ich bei der Klammerung fest! Ich bin mir nicht sicher ob das beim Factor unten sinn macht, zumal ich das Problem habe, dass die Klammerung dann von Begin an nicht akzeptiert wird. Wäre froh um etwas Hilfe. Thx! Compilerfan |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|