Funktions-Tabelle

Top  Previous  Next

Beispiele > Java > Funktions-Tabelle

 

Mit dem Funktions-Tabellen-Assistenten kann nun ein Gerüsst zur Auswertung des Parse-Baums erzeugt werden.

 

Wer die folgenden Schritte nicht im einzelnen nachvollziehen möchte, kann das fertige Ergebnis des Funktions-Tabellen-Assistenten auch direkt laden:

 

...\TextTransformer\Beispiele\Java\JavaCopy.ttp

 

Wenn sie sich den Parse-Baum im Variablen-Inspektor angesehen haben, erkennen sie, dass der Baum aus Verzweigungen besteht deren Label die Namen von Produktionen sind. Für jedes Token gibt es einen Knoten mit dem Label: IgLit.

Nun soll eine Funktions-Tabelle erzeugt werden, die Funktionen zur Behandlung Knoten aller Label enthält. Für das Kopierprogramm sind vor allem die IgLit-Knoten wichtig, da in den beiden Unterknoten der gesamte Eingabetext vorhanden ist. Die Produktions-Knoten können alle gleich behandelt werden: sie dienen als Zwischen-Station bei der Iteration zu den IgLit-Knoten.

Es werden also insgesamt nur zwei Funktionen benötigt:

 

Default-Funktion zur Behandlung der Produktions-Knoten

IgLit-Funktion zur Behandlung der IgLit-Knoten

 

 

Wählen sie auf der Start-Seite des Funktions-Tabellen-Assistenten: Neue Tabelle erzeugen. Damit kommen sie auf die zweite Seite, deren Felder ausgefüllt werden sollten wie angezeigt:

 

TreeFunctions_Table_ge

 

Auf der nächsten Seite wählen sie : Funktion für ein einzelnes Label

Auf der nächsten Seite schreiben sie das Label: IgLit

Auf der nächsten Seite schreiben sie den Funktions-Namen: CopyIgLit und den Namen für die Default Funktion: CopyDefault.

 

TreeFunctions_Name_ge

 

Als Default-Funktion wählen sie iterate auf der nächsten Seite.

 

TreeFunctions_Default_ge

 

Diese Funktion dient der Iteration zu den IgLit-Knoten.

Auf der nächsten Seite wählen sie value und ändern den Text:

 

{{

node pos = xnNode.firstChild();

out << pos.value();

pos = pos.nextSibling();

out << pos.value();

}}

 

Diese Funktion gibt beide Text-Teile eines IgLit-Knotens aus.

 

 

TreeFunctions_Template_ge

 

Nun kommen sie auf die letzte Seite und klicken auf Finish.

 

TreeFunctions_Finish_ge

 

Mit dem Cancel-Schalter können sie den Assistenten nun schließen.

Auf der Seite für die Klassenelemente können sie nun sehen, das eine Funktions-Tabelle und zwei Funktionen eingefügt wurden.

 

Das Kopier-Projekt ist fast fertig. Leider gibt es einen Schönheitsfehler. Der Baum-Assistent hat auf der Token-Seite nur Code zum Hinzufügen von Knoten für den Token-Text erzeugt, den ausgelassenen Text aber nicht berücksichtigt.. Deshalb müssen die Aktionen auf der Token-Seite noch manuell geändert werden in:

 

{{IgLit(xn, "LITERAL");}}

 

Das letzte, was noch zu tun bleibt, ist der Aufruf zur Baumauswertung. Sie können

 

"/* Breakpoint */"

 

in der Aktion am Ende von CompilationUnit ändern zu:

 

m_ftCopy.visit(n);

 

Wenn sie das Projekt ausführen, wird der Java-Quelltext in das Zielfenster kopiert.

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English