LL(1) Grammatik für Taschenrechner

Neue Frage »

compilerfan Auf diesen Beitrag antworten »
LL(1) Grammatik für Taschenrechner
Hallo Zusammen

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
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »