# sqlexer.h

    00001 /*  see copyright notice in squirrel.h */
    00002 #ifndef _SQLEXER_H_
    00003 #define _SQLEXER_H_
    00004
    00005 #ifdef SQUNICODE
    00006 typedef SQChar LexChar;
    00007 #else
    00008 typedef unsigned char LexChar;
    00009 #endif
    00010
    00011 struct SQLexer
    00012 {
    00013   SQLexer();
    00014   ~SQLexer();
    00015   void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed);
    00016   void Error(const SQChar *err);
    00017   SQInteger Lex();
    00018   const SQChar *Tok2Str(SQInteger tok);
    00019 private:
    00020   SQInteger GetIDType(SQChar *s);
    00021   SQInteger ReadString(SQChar ndelim,bool verbatim);
    00022   SQInteger ReadNumber();
    00023   void LexBlockComment();
    00024   SQInteger ReadID();
    00025   void Next();
    00026   SQInteger _curtoken;
    00027   SQTable *_keywords;
    00028 public:
    00029   SQInteger _prevtoken;
    00030   SQInteger _currentline;
    00031   SQInteger _lasttokenline;
    00032   SQInteger _currentcolumn;
    00033   const SQChar *_svalue;
    00034   SQInteger _nvalue;
    00035   SQFloat _fvalue;
    00036   SQLEXREADFUNC _readf;
    00037   SQUserPointer _up;
    00038   LexChar _currdata;
    00039   SQSharedState *_sharedstate;
    00040   sqvector<SQChar> _longstr;
    00041   CompilerErrorFunc _errfunc;
    00042   void *_errtarget;
    00043 };
    00044
    00045 #endif