mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
|
/* see copyright notice in squirrel.h */
|
||
|
#ifndef _SQLEXER_H_
|
||
|
#define _SQLEXER_H_
|
||
|
|
||
|
#ifdef SQUNICODE
|
||
|
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(const SQChar *s,SQInteger len);
|
||
|
SQInteger ReadString(SQInteger ndelim,bool verbatim);
|
||
|
SQInteger ReadNumber();
|
||
|
void LexBlockComment();
|
||
|
void LexLineComment();
|
||
|
SQInteger ReadID();
|
||
|
void Next();
|
||
|
#ifdef SQUNICODE
|
||
|
#if WCHAR_SIZE == 2
|
||
|
SQInteger AddUTF16(SQUnsignedInteger ch);
|
||
|
#endif
|
||
|
#else
|
||
|
SQInteger AddUTF8(SQUnsignedInteger ch);
|
||
|
#endif
|
||
|
SQInteger ProcessStringHexEscape(SQChar *dest, SQInteger maxdigits);
|
||
|
SQInteger _curtoken;
|
||
|
SQTable *_keywords;
|
||
|
SQBool _reached_eof;
|
||
|
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<SQChar> _longstr;
|
||
|
CompilerErrorFunc _errfunc;
|
||
|
void *_errtarget;
|
||
|
};
|
||
|
|
||
|
#endif
|