Alternativen

Top  Previous  Next

Skripte > Produktionen > Alternativen

 

Alternativen werden durch das Pipe-Zeichen "|" voneinander getrennt.

 

Beispiele:

 

"alles" | "nichts"  steht für ein alternatives Vorkommen im Text von "alles" oder "nichts".

 

text | zahl steht für die alternativen Produktionen text und zahl

 

 

Ein Sonderfall sind leere Alternativen. Leere Alternativen können sinnvoll sein, wenn eine bestimmte Aktion ausgeführt werden soll, falls keine der anderen Alternativen passt. Beispielsweise kann dann eine Fehlermeldung ausgegeben werden:

 

"alles" | "nichts" | {{out << "Fehler"; }}

 

Anmerkung:

Die Anfängermenge einer leeren Alternative enthält das spezielle Token EPS mit der Nummer 2. n dem speziellen Fall, dass auf die leere Alternative kein Token mehr in der Grammatik folgt, wird im Tokenfenster des Debuggers das erwartete Token mit "EPS" bezeichnet.

 

 

Es ist darauf zu achten, dass nicht versehentlich eine leere Alternative gebildet wird, wie es in folgenden Produktion der Fall ist:

 

X ::= (

      | "empty"

      | "size"

      | "clear"

     )

 

Vor jedem der angeführten Token steht das Zeichen '|' zur Alternativenbildung. Vor dem ersten dieser Zeichen steht aber nichts, wozu die Alternative gebildet würde. Äquivalent hätte formuliert werden können:

 

X ::= (

        "empty"

      | "size"

      | "clear"

      |

     )

 

Um das versehentliche Erzeugen leerer Alternativen zu verhindern, werden die Formulierungen der letzen beiden Beispiele als syntaktisch falsch gewertet und verursachen Fehlemeldungen. Soll bei nicht passenden Alternativen ein Parserfehler vermieden werden, ohne dass eine semantische Aktion ausgeführt wird, so kann entweder die Gesamtheit der Alternativen optional gemacht werden:

 

( "alles" | "nichts" )?

 

oder es kann eine leere Alternative mit einer leeren Aktion gebildet werden:

 

"alles" | "nichts" | {{ /*Empty*/ }}

 

 

Anmerkung: Leere Alternativen sind löschbar.

 

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English