1#ifndef js_lex_h
2#define js_lex_h
3
4enum
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
69int jsY_iswhite(int c);
70int jsY_isnewline(int c);
71int jsY_ishex(int c);
72int jsY_tohex(int c);
73
74const char *jsY_tokenstring(int token);
75int jsY_findword(const char *s, const char **list, int num);
76
77void jsY_initlex(js_State *J, const char *filename, const char *source);
78int jsY_lex(js_State *J);
79int jsY_lexjson(js_State *J);
80
81#endif
82