/
jslib_ast.incl
113 lines (109 loc) · 3.02 KB
/
jslib_ast.incl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
(*
* This file is part of ocamljs, OCaml to Javascript compiler
* Copyright (C) 2007-9 Skydeck, Inc
* Copyright (C) 2010 Jake Donham
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA
*)
type unop =
| Jdelete
| Jvoid
| Jtypeof
| Jadd2_pre
| Jsub2_pre
| Jadd_pre
| Jsub_pre
| Jtilde
| Jnot
| Jadd2_post
| Jsub2_post
and binop =
| Jhashref
| Jmul
| Jdiv
| Jmod
| Jadd
| Jsub
| Jlt
| Jgt
| Jleq
| Jgeq
| Jlsr
| Jlsl
| Jasr
| Jeq
| Jneq
| Jinstanceof
| Jseq
| Jsneq
| Jland
| Jlor
| Jand
| Jxor
| Jor
| Jcomma
| Jassign
| Jmul_assign
| Jdiv_assign
| Jmod_assign
| Jadd_assign
| Jsub_assign
| Jlsl_assign
| Jlsr_assign
| Jasr_assign
| Jand_assign
| Jxor_assign
| Jor_assign
and exp =
| Jthis of loc
| Jvar of loc * string
| Jarray of loc * exp
| Jobject of loc * (exp * exp) list
| Jstring of loc * string * bool (* true if double-quoted *)
| Jnum of loc * string
| Jnull of loc
| Jbool of loc * bool
| Jregexp of loc * string * string
| Jfun of loc * string option * string list * stmt
| Jfieldref of loc * exp * string
| Junop of loc * unop * exp
| Jbinop of loc * binop * exp * exp
| Jite of loc * exp * exp * exp
| Jcall of loc * exp * exp
| Jnew of loc * exp * exp option
| Jexp_nil of loc
| Jexp_cons of loc * exp * exp
| Jexp_Ant of loc * string
and stmt =
| Jvars of loc * (string * exp option) list
| Jfuns of loc * string * string list * stmt
| Jreturn of loc * exp option
| Jcontinue of loc * string option
| Jbreak of loc * string option
| Jswitch of loc * exp * (exp * stmt) list * stmt
| Jites of loc * exp * stmt * stmt option
| Jthrow of loc * exp
| Jexps of loc * exp
| Jtrycatch of loc * stmt * (string * stmt) option * stmt
| Jfor of loc * (string * exp option) list * exp option * exp option * exp option * stmt
| Jdowhile of loc * stmt * exp
| Jwhile of loc * exp * stmt
| Jblock of loc * stmt
| Jwith of loc * exp * stmt
| Jlabel of loc * string * stmt
| Jstmt_nil of loc
| Jstmt_cons of loc * stmt * stmt
| Jstmt_Ant of loc * string