Funktions-Tabellen-Assistent

Top  Previous  Next

Bedienung > Hauptmenü > Menü: Hilfe > Assistenten > Funktions-Tabellen-Assistent

 

Den Funktions-Tabellen-Assistenten gibt es in einer kleinen und in einer ausführlichen Version. Der kleine Schnellassistent zur Erweiterung einer bestehenden Funktionstabelle durch einzelne Funktionen erscheint, wenn mit der rechten Maustaste auf den Namen einer Funktions-Tabelle in der Liste der Klassenelemente geklickt wird. Der ausführliche Assistent, der hier beschrieben wird, kann entweder vom Schnellassistenten aus aufgerufen werden oder aber als Eintrag des Hilfe-Menüs aufzurufen.

 

Mittels des Funktions-Tabellen-Assistenten können neue Tabellen erstellt und vorhandene Tabellen erweitert werden, wobei es möglich ist ganze Gruppen von Zuordnungen auf einmal zu erstellen. Im Zusammenspiel mit dem Baum-Assistenten kann sogar für ein vollständiges Projekt automatisch der Code zur Erzeugung eines kompletten Parse-Baums in sämtliche Produktionen eingefügt werden. Diese Möglichkeit sollte für ein Projekt nur einmal ausgeführt werden, da eine Wiederholung zu Namenskonflikten führt.

 

Die Namen der erzeugten Funktionen und der Funktionstabelle werden aus einem Basisnamen generiert:

 

FTWizard_Basename_ge

 

 

Wird "m_ft" am Anfang des Namens der Funktionstabelle im nachhinein geändert wird, so arbeitet der Assistent nicht mehr korrekt mit der Tabelle zusammen.

 

Hintergrund:

 

Eines der Paradigmen zur Erzeugung von Transformationsprogrammen ist es, in einem ersten Schritt einen Parse-Baum zu erzeugen, der dann auf vielfältige Weise zur Generierung von Ausgaben verwendet werden kann. In dem Parse-Baum werden Produktionen und Token durch Baumknoten repräsentiert.

Ein empfehlenswertes Schema im TextTransformer solche Bäume zu konstruieren wird durch den Funktions-Tabellen-Assistenten unterstützt. Nach diesem Schema, werden die Namen der jeweiligen Produktionen bzw. Token als Labels der Knoten verwendet. Im TextTransformer können nun spezielle Tabellen angelegt werden: die Funktionstabellen, die den Labels der Knoten Funktionen zuordnen. Diese Zuordnung ist damit indirekt zugleich eine Zuordnung von Funktionen zu den Produktionen bzw. Token. Jede dieser Funktionen dient der Verarbeitung des zugehörigen Knotens und damit der Verarbeitung der Produktion bzw. des Tokens.

 

Häufig werden verschiedene Token oder Produktionen auf die gleiche Art und Weise zu behandeln sein. Z.B. sind viele der durch Token erkannten Texte unverändert wieder auszugeben. Daher können verschiedene Token oder Produktionen mit der gleichen Funktion verarbeitet werden. Erfordert hingegen ein spezielles Token eine spezielle Behandlung, so wird für seinem Knoten eine spezielle Funktion geschrieben, die nur ihm und keinem anderen Token zugeordnet wird.

 

Beispiel:

 

Name des Skripts

Label des Knotens

Funktion

normal1

normal1

Handle_Default

normal2

normal2

Handle_Default

special1a

special1a

Handle_special1

special1b

special1b

Handle_special1

special2

special2

Handle_special2

 

Die Initialisierung der Funktionstabelle m_ft sieht dann so aus:

 

m_ft.add("", "Handle_Default");

m_ft.add("special1a", "Handle_special1");

m_ft.add("special1b", "Handle_special1");

m_ft.add("special2", "Handle_special2");

 

In den Skripten müssen die entsprechenden Knoten erzeugt und dem gesamten Parse-Baum hinzugefügt werden. Eine Referenz auf den letzten Knoten des Parse-Baum wird als Parameter an das Skript übergeben:

 

Parameter:

node& xNode

Text:

node n("normal1");

xNode.addChildLast(n);

 

oder

 

Parameter:

node& xNode

Text:

node n("special2");

xNode.addChildLast(n);

 

Ganz entsprechend für die anderen Skripte.

Beim Aufruf der Skripte muss nun jeweils der zusätzlicher node-Parameter übergeben werden:

 

normal1[n]

special2[n]

 

 

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English