/* see copyright notice in squirrel.h */ #ifndef _SQLEXER_H_ #define _SQLEXER_H_ #ifdef _UNICODE typedef SQChar LexChar; #else typedef unsigned char LexChar; #endif struct SQLexer { SQLexer(); ~SQLexer(); void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); void Error(const SQChar *err); SQInteger Lex(); const SQChar *Tok2Str(SQInteger tok); private: SQInteger GetIDType(SQChar *s); SQInteger ReadString(SQInteger ndelim,bool verbatim); SQInteger ReadNumber(); void LexBlockComment(); SQInteger ReadID(); void Next(); SQInteger _curtoken; SQTable *_keywords; public: SQInteger _prevtoken; SQInteger _currentline; SQInteger _lasttokenline; SQInteger _currentcolumn; const SQChar *_svalue; SQInteger _nvalue; SQFloat _fvalue; SQLEXREADFUNC _readf; SQUserPointer _up; LexChar _currdata; SQSharedState *_sharedstate; sqvector _longstr; CompilerErrorFunc _errfunc; void *_errtarget; }; #endif