diff options
Diffstat (limited to 'gob/parse.h')
-rw-r--r-- | gob/parse.h | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/gob/parse.h b/gob/parse.h index 0095739692..a6c481d94a 100644 --- a/gob/parse.h +++ b/gob/parse.h @@ -26,14 +26,15 @@ namespace Gob { class Parse { public: - int16 parseExpr(char stopToken, byte *resultPtr); void skipExpr(char stopToken); - int16 parseValExpr(unsigned stopToken=99); - int16 parseVarIndex(void); void printExpr(char stopToken); void printVarIndex(void); + virtual int16 parseVarIndex(void) = 0; + virtual int16 parseValExpr(unsigned stopToken=99) = 0; + virtual int16 parseExpr(char stopToken, byte *resultPtr) = 0; Parse(GobEngine *vm); + virtual ~Parse() {}; protected: enum PointerType { @@ -48,6 +49,26 @@ protected: char *decodePtr(int32 n); }; +class Parse_v1 : public Parse { +public: + Parse_v1(GobEngine *vm); + virtual ~Parse_v1() {}; + + virtual int16 parseVarIndex(void); + virtual int16 parseValExpr(unsigned stopToken=99); + virtual int16 parseExpr(char stopToken, byte *resultPtr); +}; + +class Parse_v2 : public Parse_v1 { +public: + Parse_v2(GobEngine *vm); + virtual ~Parse_v2() {}; + + virtual int16 parseVarIndex(void); + virtual int16 parseValExpr(unsigned stopToken=99); + virtual int16 parseExpr(char stopToken, byte *resultPtr); +}; + } // End of namespace Gob #endif |