Platzhalter |
Top Previous Next |
Skripte > Tokendefinitionen > Platzhalter
Platzhalter-Token erhalten ihre Bedeutung erst aus dem Eingabetext. Textabschnitte - meist Worte -,die zunächst durch einen allgemeinen regulären Ausdruck erkannt werden, können einem Platzhalter-Token zugeordnet werden. Kommt der gleiche Textteil an späterer Stelle im Eingabetext erneut vor, so kann er nun durch das bisherige Platzhalter-Token erkannt werden. Dabei können einem Platzhalter beliebig viele literale Ausdrücke zugewiesen werden. Sind ihm mehrere Ausdrücke zugewiesen, so bilden sie eine Reihe von Alternativen, von denen jeweils nur eine an einer Textstelle passen kann.
Dynamische Token werden nur getestet, wenn sie als eine mögliche Alternative erwartet werden.
Unabhängig von den Projekteinstellungen wird bei Platzhalter-Token stets zwischen Groß- und Kleinschreibung wird unterschieden und die Wortgrenzen-Option ist gesetzt.
Ein Platzhalter-Token wird durch den Ausdruck:
{DYNAMIC}
definiert. Der Ausdruck {DYNAMIC} ist ein Schlüsselwort und wird vom TextTransformer nicht als Makro interpretiert.
Die Zuordnung der literalen Ausdrücke erfolgt in semantischen Aktionen mittels des Befehls: AddToken.
Beispiel:
Variablen, die in einem Programm-Code zunächst mit bestimmten Typ deklariert werden, können einem Platzhalter für diesen Typ zugewiesen werden. Im Definitionsteil des Codes ist dann der Typ der Variablen bekannt.
ID ::= \w+ INTEGER ::= {DYNAMIC}
"int" ( ID {{ AddToken( xState.str(), "INTEGER" ); // ordnet INTEGER den gefundenen Bezeichner zu }} "," )*
";"
INTEGER
Werden durch ID der nacheinander die Namen : i1, i2 und i3 erkannt, so kann an späterer Stelle mit INTEGER i1 oder i2 oder i3 erkannt werden. INTEGER hat jetzt die Bedeutung eines Tokens, das definiert wäre als: i1|i2|i3
Anmerkung: Die Erweiterung eines Platzhalter-Tokens durch zusätzliche Literale hat keine modifizierende Wirkung auf die Erkennung eines vorausgehenden SKIP-Symbols.
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |