Implementations-Schablone |
Top Previous Next |
Codeerzeugung > Code-Schablonen > Implementations-Schablone
Die unmodifizierte Schablone für die Implementation einer TETRA-Parserklasse ist folgende:
//---------------------------------------------------------- // ttparser_cpp.frm // TextTransformer C++ Support Frame // Copyright: Dr. Detlef Meyer-Eltz // http://www.texttransformer.de // http://www.texttransformer.com // Meyer-Eltz@t-online.de // // March, 2006 Version 1.1.0 //----------------------------------------------------------
#ifdef __BORLANDC__ #pragma hdrstop #endif
#include "-->ParserHeaderName" #include <iostream> #include "tt_exception.h" #include "tt_guard.h" #include "tt_localscanner.h" #include "tt_parsestateplugin.h" #include "tt_scanner.h"
#define indent xState.GetPlugin()->GetIndentPtr()
using namespace std; using namespace tetra;
// return types typedef -->ParserClassName::node node; typedef -->ParserClassName::str str;
-->TokenList
-->ParserClassName::-->ParserClassName() -->MemberInitialization { try { CreateScannerArray(eScannerLast); Init(); } catch(boost::regex_error& xErr) { cleanup(); throw CTT_Message(xErr.what()); } catch(CTT_Message& eMsg) { cleanup(); // did you use the actual token file? throw eMsg; } catch(...) // std::bad_alloc { cleanup(); // did you use the actual token file? throw CTT_Message("parser creation failed"); } }
-->StartRuleHeading { -->StartRule }
-->InitProcImplementation
-->InterfaceImplementations
-->ParserRules
-->ParserHeaderName wird zu Pascalparser.h, um bei dem Beispiel aus dem vorherigen Abschnitt zu bleiben
-->TokenList wird durch eine auskommentiert Liste der Namen und Definitionen der Token ersetzt. Diese Liste dient lediglich dem besseren Verständnis des nachfolgenden Codes.
-->ParserClassName hat dieselbe Bedeutung wie im vorherigen Abschnitt beschrieben. In den Klammerausdruck hinter dem zweiten Vorkommen von ParserClassName können die der Deklaration entsprechenden Parameter geschrieben werden, falls auch die Header-Schablone entsprechend modifiziert ist.
-->MemberInitialization, hier werden Klassenvariablen - z.B. Funktionstabellen -initialisiert.
-->StartRuleHeading entspricht der ParserCallDeclaration der Header-Schablone. Dies ist der Kopf der Aufruffunktion des Parsers.
-->StartRule reserviert den Platz für den Funktionsblock der Aufruffunktion des Parsers.Er kann bei Bedarf von einem try-catch-Block eingeschlossen werden.
-->InitProcImplementation ist der Ort an dem die Prozedur zur Initialisierung der Klassenvariablen eingefügt wird.
-->InterfaceImplementations steht für die Reihe der Funktionen zur direkten Ausführung von anderen als der Startregel. In den lokalen Optionen muss "Interfacemethode erzeugen" aktiviert werden, um die Erzeugung dieser Interface-methoden zu veranlassen. .
-->ParserRules schließlich ist die Position an die die Implementierungen der Parserregeln geschrieben werden. |
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |