DarthSpot
Lt. Commander
- Registriert
- Mai 2008
- Beiträge
- 1.112
Hallo,
Ich arbeite im Moment an einem Parser für eine Scriptsprache und stecke beim Umgang mit CUP (bin Neuling ^^) in der Klemme.
Geht um folgendes.
Ich habe Beispielsweise in der Syntax ein Konstrukt wie dieses hier (ein if):
if ::= IF expression THEN block {ELSEIF expression THEN block } [ELSE block] END
{} heißt beliebig oft wiederholbar, [] ist optional (0 oder 1 mal).
Nun erlaubt Cup aber solche Klammern in der Syntax nicht. Ich habe das ganze also ein wenig umgebaut zu
if ::= IF expression THEN block elseif else END;
elseif ::= ELSEIF expression THEN block elseif | empty;
else ::= ELSE block | empty;
empty ::= ;
Das Problem ist das empty, da es hierfür keinen wirklichen Ausdruck gibt, und CUP tonnenweise Konflikte erkennt, weil das leere Wort ja quasi überall steht.
Weiß jemand wie man sowas löst?
MfG
DarthSpot
Ich arbeite im Moment an einem Parser für eine Scriptsprache und stecke beim Umgang mit CUP (bin Neuling ^^) in der Klemme.
Geht um folgendes.
Ich habe Beispielsweise in der Syntax ein Konstrukt wie dieses hier (ein if):
if ::= IF expression THEN block {ELSEIF expression THEN block } [ELSE block] END
{} heißt beliebig oft wiederholbar, [] ist optional (0 oder 1 mal).
Nun erlaubt Cup aber solche Klammern in der Syntax nicht. Ich habe das ganze also ein wenig umgebaut zu
if ::= IF expression THEN block elseif else END;
elseif ::= ELSEIF expression THEN block elseif | empty;
else ::= ELSE block | empty;
empty ::= ;
Das Problem ist das empty, da es hierfür keinen wirklichen Ausdruck gibt, und CUP tonnenweise Konflikte erkennt, weil das leere Wort ja quasi überall steht.
Weiß jemand wie man sowas löst?
MfG
DarthSpot