Values

EIdent(i:String)

EField(e:Expr, f:String)

EBinop(op:Binop, e1:Expr, e2:Expr)

EUnop(op:Unop, e1:Expr)

ECall(e:Expr, args:Array<Expr>)

EBlock(el:Array<Expr>)

EVars(v:Array<VarDecl>)

EIf(econd:Expr, eif:Expr, eelse:Null<Expr>)

EFor(v:String, loop:Expr, block:Expr)

EReturn(e:Null<Expr>)

EArray(e:Expr, eindex:Expr)

EArrayDecl(el:Array<Expr>)

ESwitch(e:Expr, cases:Array<{values:Array<Expr>, expr:Expr}>, def:Null<Expr>)

EWhile(cond:Expr, loop:Expr, normalWhile:Bool)

EMeta(name:String, args:Array<Expr>, e:Expr)