KSGSLeser.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. class KSGScriptProcessor;
  18. __declspec( dllexport ) void removeLehr( Text *txt );
  19. __declspec( dllexport ) void removeKlammer( Text *txt );
  20. __declspec( dllexport ) int hatOperator( Text *txt );
  21. __declspec( dllexport ) int getOperatorPos( Text *txt, int *len );
  22. struct KSGSLeseDebug
  23. {
  24. Text datei;
  25. int zeile;
  26. };
  27. struct KSGSLeseBefehl
  28. {
  29. int typ;
  30. Text befehl;
  31. Array< KSGSLeseBefehl * > listA;
  32. Array< KSGSLeseBefehl * > listB;
  33. KSGSLeseDebug debug;
  34. // Destruktor
  35. __declspec( dllexport ) ~KSGSLeseBefehl();
  36. };
  37. struct KSGSLeseVariable
  38. {
  39. Text typ;
  40. Text name;
  41. Text wert;
  42. KSGSLeseDebug debug;
  43. };
  44. struct KSGSLeseFunktion
  45. {
  46. int ref = 1;
  47. Text name;
  48. Text typ;
  49. Array< KSGSLeseVariable * > parameter;
  50. Array< KSGSLeseBefehl * > befehle;
  51. KSGSLeseDebug debug;
  52. void release();
  53. // Destruktor
  54. __declspec( dllexport ) ~KSGSLeseFunktion();
  55. };
  56. struct KSGSLeseKlasse
  57. {
  58. int ref = 1;
  59. Text name;
  60. Array< KSGSLeseVariable * > variablen;
  61. Array< bool > vSichtbar;
  62. Array< KSGSLeseFunktion * > funktionen;
  63. Array< bool > fSichtbar;
  64. KSGSLeseDebug debug;
  65. void release();
  66. // Destruktor
  67. __declspec( dllexport ) ~KSGSLeseKlasse();
  68. };
  69. struct KSGSLeseScript
  70. {
  71. Array< KSGSLeseVariable * > variablen;
  72. Array< KSGSLeseFunktion * > funktionen;
  73. Array< KSGSLeseKlasse * > klassen;
  74. // Destruktor
  75. __declspec( dllexport ) ~KSGSLeseScript();
  76. };
  77. class KSGSLeser : public virtual ReferenceCounter
  78. {
  79. private:
  80. KSGScriptProcessor *zObj;
  81. int mainFuncId;
  82. int mausFuncId;
  83. int tastaturFuncId;
  84. int tickFuncId;
  85. int renderFuncId;
  86. protected:
  87. bool errorIgnore;
  88. KSGSLeseScript *dat;
  89. int zeile;
  90. Reader *d;
  91. Framework::Text fileName;
  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( Reader *reader, KSGScriptProcessor *zObj, Text fileName );
  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. };
  130. }
  131. #endif