#pragma once #include "../../Leser/KSGSLeser.h" #include "../../Include/KSGScript.h" using namespace Framework; namespace KSGScript { class ColorParser : public KSGSLeser { private: struct Position { bool inKeyword; bool inTypename; bool inInstanzVar; bool inParameter; }; struct Abschnitt { int anfang; int ende; KSGSLeseKlasse *zKlasse; KSGSLeseFunktion *zFunktion; }; struct TextAbschnitt { int anfang; int ende; }; Array< Abschnitt > abschnitt; Array< TextAbschnitt > error; Array< TextAbschnitt > kommentar; Array< TextAbschnitt > string; 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; virtual void handleKommentar( int beginn, int ende ); virtual void handleString( int beginn, int ende ); // 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 pos, int &underlineC ); }; }