KSGSLeser.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #ifndef KSGSLeser_H
  2. #define KSGSLeser_H
  3. #include <Text.h>
  4. #include <Array.h>
  5. #include <Reader.h>
  6. using namespace Framework;
  7. namespace KSGScript
  8. {
  9. class KSGScriptO;
  10. class KSGSKlasse;
  11. class KSGSFunktion;
  12. struct KSGSVariableDef;
  13. class KSGSCompVarTable;
  14. class KSGSCompFuncTable;
  15. class KSGSCompKlassTable;
  16. class KSGSBefehl;
  17. __declspec( dllexport ) void removeLehr( Text *txt );
  18. __declspec( dllexport ) void removeKlammer( Text *txt );
  19. __declspec( dllexport ) int hatOperator( Text *txt );
  20. __declspec( dllexport ) int getOperatorPos( Text *txt, int *län );
  21. struct KSGSLeseDebug
  22. {
  23. Text datei;
  24. int zeile;
  25. };
  26. struct KSGSLeseBefehl
  27. {
  28. int typ;
  29. Text befehl;
  30. Array< KSGSLeseBefehl* > listA;
  31. Array< KSGSLeseBefehl* > listB;
  32. KSGSLeseDebug debug;
  33. // Destruktor
  34. __declspec( dllexport ) ~KSGSLeseBefehl();
  35. };
  36. struct KSGSLeseVariable
  37. {
  38. Text typ;
  39. Text name;
  40. Text wert;
  41. KSGSLeseDebug debug;
  42. };
  43. struct KSGSLeseFunktion
  44. {
  45. int ref = 1;
  46. Text name;
  47. Text typ;
  48. Array< KSGSLeseVariable* > parameter;
  49. Array< KSGSLeseBefehl* > befehle;
  50. KSGSLeseDebug debug;
  51. void release();
  52. // Destruktor
  53. __declspec( dllexport ) ~KSGSLeseFunktion();
  54. };
  55. struct KSGSLeseKlasse
  56. {
  57. int ref = 1;
  58. Text name;
  59. Array< KSGSLeseVariable* > variablen;
  60. Array< bool > vSichtbar;
  61. Array< KSGSLeseFunktion* > funktionen;
  62. Array< bool > fSichtbar;
  63. KSGSLeseDebug debug;
  64. void release();
  65. // Destruktor
  66. __declspec( dllexport ) ~KSGSLeseKlasse();
  67. };
  68. struct KSGSLeseScript
  69. {
  70. Array< KSGSLeseVariable* > variablen;
  71. Array< KSGSLeseFunktion* > funktionen;
  72. Array< KSGSLeseKlasse* > klassen;
  73. // Destruktor
  74. __declspec( dllexport ) ~KSGSLeseScript();
  75. };
  76. class KSGSLeser
  77. {
  78. private:
  79. KSGScriptO *zObj;
  80. int mainFuncId;
  81. int mausFuncId;
  82. int tastaturFuncId;
  83. int tickFuncId;
  84. int renderFuncId;
  85. int ref;
  86. protected:
  87. bool errorIgnore;
  88. Text *pfad;
  89. KSGSLeseScript *dat;
  90. int zeile;
  91. Reader *d;
  92. // Script Laden
  93. KSGSLeser();
  94. virtual void handleError( int begin, int ende );
  95. virtual void handleKommentar( int beginn, int ende );
  96. virtual void handleString( int beginn, int ende );
  97. __declspec( dllexport ) bool ladeDatei();
  98. __declspec( dllexport ) bool leseBis( char c );
  99. __declspec( dllexport ) __int64 nextPosOf( char c, char c2 );
  100. __declspec( dllexport ) bool leseBisText();
  101. __declspec( dllexport ) int leseNext();
  102. __declspec( dllexport ) bool istTrenner( char c );
  103. __declspec( dllexport ) bool istLehr( char c );
  104. __declspec( dllexport ) virtual KSGSLeseKlasse *leseKlasse();
  105. __declspec( dllexport ) virtual KSGSLeseFunktion *leseFunktion();
  106. __declspec( dllexport ) KSGSLeseVariable *leseVariable( bool param = 0 );
  107. __declspec( dllexport ) KSGSLeseBefehl *leseBefehl();
  108. // Script Compilieren
  109. __declspec( dllexport ) bool compileKlasse( KSGSLeseKlasse *zLK, KSGSCompKlassTable *zKT );
  110. __declspec( dllexport ) bool compileFunktion( KSGSLeseFunktion *zLF, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, int s = 0 );
  111. __declspec( dllexport ) KSGSVariableDef *compileVariable( KSGSLeseVariable *zLV, KSGSCompKlassTable *zKT, int id );
  112. __declspec( dllexport ) KSGSKlasse *buildKlasse( KSGSLeseKlasse *zLK, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT );
  113. __declspec( dllexport ) KSGSFunktion *buildFunktion( KSGSLeseFunktion *zLF, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT, const char *klassName = 0 );
  114. __declspec( dllexport ) KSGSBefehl *buildBefehl( KSGSLeseBefehl *zLB, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT, const char *klassName = 0, const char *funktionName = 0 );
  115. public:
  116. // Konstruktor
  117. __declspec( dllexport ) KSGSLeser( const char *pfad, KSGScriptO *zObj );
  118. // Destruktor
  119. __declspec( dllexport ) virtual ~KSGSLeser();
  120. // nicht constant
  121. __declspec( dllexport ) bool laden();
  122. __declspec( dllexport ) bool compile( RCArray< KSGSKlasse > *klassen, RCArray< KSGSFunktion > *funktionen, Array< KSGSVariableDef* > *variablen );
  123. // constant
  124. __declspec( dllexport ) int getMainFuncId() const;
  125. __declspec( dllexport ) int getMausFuncId() const;
  126. __declspec( dllexport ) int getTastaturFuncId() const;
  127. __declspec( dllexport ) int getTickFuncId() const;
  128. __declspec( dllexport ) int getRenderFuncId() const;
  129. // Reference Counting
  130. __declspec( dllexport ) KSGSLeser *getThis();
  131. __declspec( dllexport ) KSGSLeser *release();
  132. };
  133. }
  134. #endif