Einfache Vorausschau-Produktion

Top  Previous  Next

Beispiele > Java > Einfache Vorausschau-Produktion

 

Der Java-Parser ist nicht LL(1)-konform. An mehren Stellen der Grammatik hängt die Entscheidung über die zu wählende Alternative von einer Vorausschau um mehr als ein Token ab. Das IF- und das WHILE-Konstrukt des TextTransformers erlaubt eine solche Vorausschau, wenn in der jeweiligen Bedingung eine Produktion zur Vorausschau aufgerufen wird.

 

Wird zum Beispiel in der Statement-Produktion ein Bezeichner als nächste Token erkannt, so ist zunächst nicht ausgemacht, ob dieser Bezeichner für ein Label steht oder für einen Ausdruck. Er steht für ein Label, wenn ihm ein Doppelpunkt folgt. Daher wird hier der Fortgang im Parser davon abhängig gemacht, ob die Produktion isLabel

 

isLabel ::= ident ":"

 

den anschließenden Text parsen kann oder nicht. isLabel kann den Text genau dann Parsen, wenn ein Doppelpunkt auf den Bezeichner folgt. Die Grammatik-Alternativen sind daher in die folgende IF-Konstruktion eingebunden

 

IF( isLabel() )

ident ":" Statement

ELSE

StatementExpression ";"

END

 

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English