Aktionen |
Top Previous Next |
Skripte > Produktionen > Aktionen
Vor und nach der Erkennung eines Tokens oder dem Aufruf einer Produktion können sogenannte semantische Aktionen ausgeführt werden. (In sehr speziellen Fällen ist dies auch während der Erkennung möglich). Diese Aktionen dienen zumeist der Verarbeitung des zuletzt erkannten Textabschnitts. Die Anweisungen die in den Aktionen ausgeführt werden sollen, sind in den Text einer Produktion eingefügt. Zur Abhebung werden sie in spezielle Klammerpaare eingeschlossen. Die Anweisungen selbst werden in der Sprache C++ formuliert. Da TETRA einerseits in der Lage ist einen Teil der C++-Befehle direkt zu interpretieren andererseits bei der Erzeugung von Sourcecode auf den gesamten Reichtum von C++ zurückgreifen kann, muss es eine Möglichkeit geben, zu bestimmen, ob eine C++-Anweisung für den internen Interpreter gedacht ist oder zum Export. Aus diesem Grunde gibt es mehrere Arten von Klammern in die der C++-Code innerhalb einer Produktion eingebettet werden kann.
{-...-} semantische Interpreteraktionen {_..._} semantische Aktionen zum Export {=...=} semantische Aktionen sowohl für den Interpreter als auch zum Export {{...}} semantische Aktionen, die gemäß den Projekteinstellungen für den Interpreter oder den Export bestimmt sind
Der Teil der Sprache C++, den der TextTransformer interpretieren kann ist im nächsten Kapitel dargestellt: Interpreterbefehle.
Eine typische Aktion wäre z.B. das Kopieren des vom zuletzt erkannten Token abgedeckten Quelltextabschnitts in die Ausgabe:
{{out << xState.str();}}
Die Syntax der semantischen Aktionen wird vom TextTransformer nur geprüft, soweit sie für den Interpreter bestimmt sind. Die allein für den Export vorgesehenen Aktionen werden schlicht in den generierten Code kopiert. Erst, wenn der erzeugten Code in ein C++-Programm eingebunden wird, wird er bei dessen Compilierung geprüft.
Die verschiedenen Klammerungen sind nicht möglich innerhalb von Bedingungen der IF-Strukturen oder WHILE-Strukturen. Dieser Code ist immer beides: interpretierbar und exportierbar.
Das Projekt EditProds demonstriert den parallelen Einsatz von semantischem Code, der nur für den Interpreter bestimmt ist und semantischem Code für den Export. |
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |