Gruppierung |
Top Previous Next |
Skripte > Produktionen > Gruppierung
Durch die Klammern '(' und ')' können Ausdrücke innerhalb der Definition einer Produktion gruppiert werden. Dadurch kann der Vorrang der Verkettung aufgehoben werden, wenn Gruppen von Alternativen zu bilden sind.
Beispiel:
("a" | "b") ("c" | "d") passt auf "a c", "a d", "b c" und "b d" "a" | "b" "c" | "d" passt auf "a", "b c" und "d"
Wird der Vorrang der Verkettung außer Acht gelassen,so führt dies häufig zu verblüffenden Ergebnissen insbesondere dann, wenn semantische Aktionen beteiligt sind.
Beispiel:
{{str s;}} "a" {{s = "a"; }} | "b" {{s = "b"; }}
ergibt für die letzte Zeile die Fehlermeldung: Unbekannter Bezeicher : s Implizit wurden die ersten drei Zeilen geklammert, so dass nur in diesem Bereich die Deklaration von str s gültig ist. Korrekt wäre zu schreiben:
{{str s;}} ( "a" {{s = "a"; }} | "b" {{s = "b"; }} )
Ein weiteres Beispiel hierfür ist die in der Einleitung beschriebene Inner-Produktion, bei der eine Klammerung um "b" | "c" erforderlich ist .
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |