mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 00:37:15 +01:00
4a6bfc086c
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
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
|