ColorParser.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #pragma once
  2. #include "../../Leser/KSGSLeser.h"
  3. #include "../../Include/KSGScript.h"
  4. using namespace Framework;
  5. namespace KSGScript
  6. {
  7. class ColorParser : private KSGSLeser
  8. {
  9. private:
  10. struct Position
  11. {
  12. int pos;
  13. bool inKeyword;
  14. bool inTypename;
  15. bool inInstanzVar;
  16. bool inParameter;
  17. bool inString;
  18. bool inChar;
  19. bool lastLehr;
  20. bool lastTrenner;
  21. };
  22. struct Abschnitt
  23. {
  24. int anfang;
  25. int ende;
  26. KSGSLeseKlasse *zKlasse;
  27. KSGSLeseFunktion *zFunktion;
  28. };
  29. struct Error
  30. {
  31. int anfang;
  32. int ende;
  33. };
  34. Array< Abschnitt > abschnitt;
  35. Array< Error > error;
  36. int ref;
  37. Text *txt;
  38. Text *wd;
  39. Position pos;
  40. static const char *keyword[];
  41. static const int keywordAnz;
  42. static const char *type[];
  43. static const int typeAnz;
  44. public:
  45. // Konstructor
  46. // zTxt: Der Text, der geparsed werden soll
  47. ColorParser( Text *zTxt );
  48. // Destructor
  49. ~ColorParser();
  50. // behandelt einen Fehler
  51. void handleError( int begin, int ende ) override;
  52. // Setzt den Parsevorgang zum Beginn zurück
  53. void reset();
  54. // Lädt das Script neu
  55. void reload();
  56. KSGSLeseKlasse *leseKlasse() override;
  57. KSGSLeseFunktion *leseFunktion() override;
  58. // Gibt den Farbtyp des nächsten Zeichens zurück
  59. KSGScriptEditor::ColorType getNextColor( int &underlineC );
  60. // Reference Counting
  61. ColorParser *getThis();
  62. ColorParser *release();
  63. };
  64. }