1 /* see copyright notice in squirrel.h */ 2 #ifndef _SQLEXER_H_ 3 #define _SQLEXER_H_ 4 5 #define MAX_STRING 2024 6 7 8 9 struct SQLexer 10 { 11 SQLexer(); 12 ~SQLexer(); 13 void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); 14 void Error(const SQChar *err); 15 SQInteger Lex(); 16 const SQChar *Tok2Str(SQInteger tok); 17 private: 18 SQInteger GetIDType(SQChar *s); 19 SQInteger ReadString(SQInteger ndelim,bool verbatim); 20 SQInteger ReadNumber(); 21 void LexBlockComment(); 22 SQInteger ReadID(); 23 void Next(); 24 SQInteger _curtoken; 25 SQTable *_keywords; 26 public: 27 SQInteger _prevtoken; 28 SQInteger _currentline; 29 SQInteger _lasttokenline; 30 SQInteger _currentcolumn; 31 const SQChar *_svalue; 32 SQInteger _nvalue; 33 SQFloat _fvalue; 34 SQLEXREADFUNC _readf; 35 SQUserPointer _up; 36 #ifdef _UNICODE 37 SQChar _currdata; 38 #else 39 unsigned char _currdata; 40 #endif 41 SQSharedState *_sharedstate; 42 sqvector<SQChar> _longstr; 43 CompilerErrorFunc _errfunc; 44 void *_errtarget; 45 }; 46 47 #endif 48