sqlexer.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* see copyright notice in squirrel.h */
  2. #ifndef _SQLEXER_H_
  3. #define _SQLEXER_H_
  4. #ifdef SQUNICODE
  5. typedef SQChar LexChar;
  6. #else
  7. typedef unsigned char LexChar;
  8. #endif
  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(const SQChar *s,SQInteger len);
  19. SQInteger ReadString(SQInteger ndelim,bool verbatim);
  20. SQInteger ReadNumber();
  21. void LexBlockComment();
  22. void LexLineComment();
  23. SQInteger ReadID();
  24. void Next();
  25. #ifdef SQUNICODE
  26. #if WCHAR_SIZE == 2
  27. SQInteger AddUTF16(SQUnsignedInteger ch);
  28. #endif
  29. #else
  30. SQInteger AddUTF8(SQUnsignedInteger ch);
  31. #endif
  32. SQInteger ProcessStringHexEscape(SQChar *dest, SQInteger maxdigits);
  33. SQInteger _curtoken;
  34. SQTable *_keywords;
  35. SQBool _reached_eof;
  36. public:
  37. SQInteger _prevtoken;
  38. SQInteger _currentline;
  39. SQInteger _lasttokenline;
  40. SQInteger _currentcolumn;
  41. const SQChar *_svalue;
  42. SQInteger _nvalue;
  43. SQFloat _fvalue;
  44. SQLEXREADFUNC _readf;
  45. SQUserPointer _up;
  46. LexChar _currdata;
  47. SQSharedState *_sharedstate;
  48. sqvector<SQChar> _longstr;
  49. CompilerErrorFunc _errfunc;
  50. void *_errtarget;
  51. };
  52. #endif