1 #ifndef js_lex_h
2 #define js_lex_h
3 
4 enum
5 {
6 	TK_IDENTIFIER = 256,
7 	TK_NUMBER,
8 	TK_STRING,
9 	TK_REGEXP,
10 
11 	/* multi-character punctuators */
12 	TK_LE,
13 	TK_GE,
14 	TK_EQ,
15 	TK_NE,
16 	TK_STRICTEQ,
17 	TK_STRICTNE,
18 	TK_SHL,
19 	TK_SHR,
20 	TK_USHR,
21 	TK_AND,
22 	TK_OR,
23 	TK_ADD_ASS,
24 	TK_SUB_ASS,
25 	TK_MUL_ASS,
26 	TK_DIV_ASS,
27 	TK_MOD_ASS,
28 	TK_SHL_ASS,
29 	TK_SHR_ASS,
30 	TK_USHR_ASS,
31 	TK_AND_ASS,
32 	TK_OR_ASS,
33 	TK_XOR_ASS,
34 	TK_INC,
35 	TK_DEC,
36 
37 	/* keywords */
38 	TK_BREAK,
39 	TK_CASE,
40 	TK_CATCH,
41 	TK_CONTINUE,
42 	TK_DEBUGGER,
43 	TK_DEFAULT,
44 	TK_DELETE,
45 	TK_DO,
46 	TK_ELSE,
47 	TK_FALSE,
48 	TK_FINALLY,
49 	TK_FOR,
50 	TK_FUNCTION,
51 	TK_IF,
52 	TK_IN,
53 	TK_INSTANCEOF,
54 	TK_NEW,
55 	TK_NULL,
56 	TK_RETURN,
57 	TK_SWITCH,
58 	TK_THIS,
59 	TK_THROW,
60 	TK_TRUE,
61 	TK_TRY,
62 	TK_TYPEOF,
63 	TK_VAR,
64 	TK_VOID,
65 	TK_WHILE,
66 	TK_WITH,
67 };
68 
69 int jsY_iswhite(int c);
70 int jsY_isnewline(int c);
71 int jsY_ishex(int c);
72 int jsY_tohex(int c);
73 
74 const char *jsY_tokenstring(int token);
75 int jsY_findword(const char *s, const char **list, int num);
76 
77 void jsY_initlex(js_State *J, const char *filename, const char *source);
78 int jsY_lex(js_State *J);
79 int jsY_lexjson(js_State *J);
80 
81 #endif
82