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 |