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