]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blob - QRScanner/mobile/jni/thirdparty/mujs/jsparse.h
Add MuPDF native source codes
[hornmich/skoda-qr-demo.git] / QRScanner / mobile / jni / thirdparty / mujs / jsparse.h
1 #ifndef js_parse_h
2 #define js_parse_h
3
4 enum js_AstType
5 {
6         AST_LIST,
7         AST_FUNDEC,
8         AST_IDENTIFIER,
9
10         EXP_IDENTIFIER,
11         EXP_NUMBER,
12         EXP_STRING,
13         EXP_REGEXP,
14
15         /* literals */
16         EXP_UNDEF, /* for array elisions */
17         EXP_NULL,
18         EXP_TRUE,
19         EXP_FALSE,
20         EXP_THIS,
21
22         EXP_ARRAY,
23         EXP_OBJECT,
24         EXP_PROP_VAL,
25         EXP_PROP_GET,
26         EXP_PROP_SET,
27
28         EXP_FUN,
29
30         /* expressions */
31         EXP_INDEX,
32         EXP_MEMBER,
33         EXP_CALL,
34         EXP_NEW,
35
36         EXP_POSTINC,
37         EXP_POSTDEC,
38
39         EXP_DELETE,
40         EXP_VOID,
41         EXP_TYPEOF,
42         EXP_PREINC,
43         EXP_PREDEC,
44         EXP_POS,
45         EXP_NEG,
46         EXP_BITNOT,
47         EXP_LOGNOT,
48
49         EXP_MOD,
50         EXP_DIV,
51         EXP_MUL,
52         EXP_SUB,
53         EXP_ADD,
54         EXP_USHR,
55         EXP_SHR,
56         EXP_SHL,
57         EXP_IN,
58         EXP_INSTANCEOF,
59         EXP_GE,
60         EXP_LE,
61         EXP_GT,
62         EXP_LT,
63         EXP_STRICTNE,
64         EXP_STRICTEQ,
65         EXP_NE,
66         EXP_EQ,
67         EXP_BITAND,
68         EXP_BITXOR,
69         EXP_BITOR,
70         EXP_LOGAND,
71         EXP_LOGOR,
72
73         EXP_COND,
74
75         EXP_ASS,
76         EXP_ASS_MUL,
77         EXP_ASS_DIV,
78         EXP_ASS_MOD,
79         EXP_ASS_ADD,
80         EXP_ASS_SUB,
81         EXP_ASS_SHL,
82         EXP_ASS_SHR,
83         EXP_ASS_USHR,
84         EXP_ASS_BITAND,
85         EXP_ASS_BITXOR,
86         EXP_ASS_BITOR,
87
88         EXP_COMMA,
89
90         EXP_VAR, /* var initializer */
91
92         /* statements */
93         STM_BLOCK,
94         STM_EMPTY,
95         STM_VAR,
96         STM_IF,
97         STM_DO,
98         STM_WHILE,
99         STM_FOR,
100         STM_FOR_VAR,
101         STM_FOR_IN,
102         STM_FOR_IN_VAR,
103         STM_CONTINUE,
104         STM_BREAK,
105         STM_RETURN,
106         STM_WITH,
107         STM_SWITCH,
108         STM_THROW,
109         STM_TRY,
110         STM_DEBUGGER,
111
112         STM_LABEL,
113         STM_CASE,
114         STM_DEFAULT,
115 };
116
117 typedef struct js_JumpList js_JumpList;
118
119 struct js_JumpList
120 {
121         enum js_AstType type;
122         int inst;
123         js_JumpList *next;
124 };
125
126 struct js_Ast
127 {
128         int type;
129         int line;
130         js_Ast *parent, *a, *b, *c, *d;
131         double number;
132         const char *string;
133         js_JumpList *jumps; /* list of break/continue jumps to patch */
134         int casejump; /* for switch case clauses */
135         js_Ast *gcnext; /* next in alloc list */
136 };
137
138 js_Ast *jsP_parsefunction(js_State *J, const char *filename, const char *params, const char *body);
139 js_Ast *jsP_parse(js_State *J, const char *filename, const char *source);
140 void jsP_freeparse(js_State *J);
141
142 const char *jsP_aststring(enum js_AstType type);
143 void jsP_dumpsyntax(js_State *J, js_Ast *prog);
144 void jsP_dumplist(js_State *J, js_Ast *prog);
145
146 #endif