#pragma once #include "../../Leser/KSGSLeser.h" #include "../../Include/KSGScript.h" using namespace Framework; namespace KSGScript { class ColorParser : private KSGSLeser { private: struct Position { int pos; bool inKeyword; bool inTypename; bool inInstanzVar; bool inParameter; bool inString; bool inChar; bool lastLehr; bool lastTrenner; }; struct Abschnitt { int anfang; int ende; KSGSLeseKlasse *zKlasse; KSGSLeseFunktion *zFunktion; }; struct Error { int anfang; int ende; }; Array< Abschnitt > abschnitt; Array< Error > error; int ref; Text *txt; Text *wd; Position pos; static const char *keyword[]; static const int keywordAnz; static const char *type[]; static const int typeAnz; public: // Konstructor // zTxt: Der Text, der geparsed werden soll ColorParser( Text *zTxt ); // Destructor ~ColorParser(); // behandelt einen Fehler void handleError( int begin, int ende ) override; // Setzt den Parsevorgang zum Beginn zurück void reset(); // Lädt das Script neu void reload(); KSGSLeseKlasse *leseKlasse() override; KSGSLeseFunktion *leseFunktion() override; // Gibt den Farbtyp des nächsten Zeichens zurück KSGScriptEditor::ColorType getNextColor( int &underlineC ); // Reference Counting ColorParser *getThis(); ColorParser *release(); }; }