sig
type id = string
type prefixOp =
JavaScript_syntax.prefixOp =
PrefixLNot
| PrefixBNot
| PrefixPlus
| PrefixMinus
| PrefixTypeof
| PrefixVoid
| PrefixDelete
type unaryAssignOp =
JavaScript_syntax.unaryAssignOp =
PrefixInc
| PrefixDec
| PostfixInc
| PostfixDec
type infixOp =
JavaScript_syntax.infixOp =
OpLT
| OpLEq
| OpGT
| OpGEq
| OpIn
| OpInstanceof
| OpEq
| OpNEq
| OpStrictEq
| OpStrictNEq
| OpLAnd
| OpLOr
| OpMul
| OpDiv
| OpMod
| OpSub
| OpLShift
| OpSpRShift
| OpZfRShift
| OpBAnd
| OpBXor
| OpBOr
| OpAdd
type assignOp =
JavaScript_syntax.assignOp =
OpAssign
| OpAssignAdd
| OpAssignSub
| OpAssignMul
| OpAssignDiv
| OpAssignMod
| OpAssignLShift
| OpAssignSpRShift
| OpAssignZfRShift
| OpAssignBAnd
| OpAssignBXor
| OpAssignBOr
type const =
JavaScript_syntax.const =
CString of string
| CRegexp of string * bool * bool
| CNum of float
| CInt of int
| CBool of bool
| CNull
| CUndefined
type prop =
JavaScript_syntax.prop =
PropId of JavaScript.id
| PropString of string
| PropNum of int
type varDecl =
JavaScript_syntax.varDecl =
VarDeclNoInit of JavaScript.id
| VarDecl of JavaScript.id * JavaScript.expr
and forInit =
JavaScript_syntax.forInit =
NoForInit
| VarForInit of JavaScript.varDecl list
| ExprForInit of JavaScript.expr
and catch =
JavaScript_syntax.catch =
CatchClause of JavaScript.id * JavaScript.stmt
and forInInit =
JavaScript_syntax.forInInit =
VarForInInit of JavaScript.id
| NoVarForInInit of JavaScript.id
and caseClause =
JavaScript_syntax.caseClause =
CaseClause of JavaScript.expr * JavaScript.stmt
| CaseDefault of JavaScript.stmt
and lvalue =
JavaScript_syntax.lvalue =
VarLValue of JavaScript.id
| DotLValue of JavaScript.expr * JavaScript.id
| BracketLValue of JavaScript.expr * JavaScript.expr
and expr =
JavaScript_syntax.expr =
ConstExpr of JavaScript.const
| ArrayExpr of JavaScript.expr list
| ObjectExpr of (JavaScript.prop * JavaScript.expr) list
| ThisExpr
| VarExpr of JavaScript.id
| DotExpr of JavaScript.expr * JavaScript.id
| BracketExpr of JavaScript.expr * JavaScript.expr
| NewExpr of JavaScript.expr * JavaScript.expr list
| PrefixExpr of JavaScript.prefixOp * JavaScript.expr
| UnaryAssignExpr of JavaScript.unaryAssignOp * JavaScript.lvalue
| InfixExpr of JavaScript.infixOp * JavaScript.expr * JavaScript.expr
| IfExpr of JavaScript.expr * JavaScript.expr * JavaScript.expr
| AssignExpr of JavaScript.assignOp * JavaScript.lvalue * JavaScript.expr
| ParenExpr of JavaScript.expr
| ListExpr of JavaScript.expr * JavaScript.expr
| CallExpr of JavaScript.expr * JavaScript.expr list
| FuncExpr of JavaScript.id list * JavaScript.stmt
| NamedFuncExpr of JavaScript.id * JavaScript.id list * JavaScript.stmt
and stmt =
JavaScript_syntax.stmt =
BlockStmt of JavaScript.stmt list
| EmptyStmt
| ExprStmt of JavaScript.expr
| IfStmt of JavaScript.expr * JavaScript.stmt * JavaScript.stmt
| IfSingleStmt of JavaScript.expr * JavaScript.stmt
| SwitchStmt of JavaScript.expr * JavaScript.caseClause list
| WhileStmt of JavaScript.expr * JavaScript.stmt
| DoWhileStmt of JavaScript.stmt * JavaScript.expr
| BreakStmt
| BreakToStmt of JavaScript.id
| ContinueStmt
| ContinueToStmt of JavaScript.id
| LabelledStmt of JavaScript.id * JavaScript.stmt
| ForInStmt of JavaScript.forInInit * JavaScript.expr * JavaScript.stmt
| ForStmt of JavaScript.forInit * JavaScript.expr * JavaScript.expr *
JavaScript.stmt
| TryStmt of JavaScript.stmt * JavaScript.catch list * JavaScript.stmt
| ThrowStmt of JavaScript.expr
| ReturnStmt of JavaScript.expr
| WithStmt of JavaScript.expr * JavaScript.stmt
| VarDeclStmt of JavaScript.varDecl list
| FuncStmt of JavaScript.id * JavaScript.id list * JavaScript.stmt
type prog = JavaScript_syntax.prog = Prog of JavaScript.stmt list
val from_string : string -> JavaScript.prog
val from_file : string -> JavaScript.prog
val show_expr : JavaScript.expr -> string
val show_stmt : JavaScript.stmt -> string
val show_prog : JavaScript.prog -> string
end