{-# LANGUAGE NoMonomorphismRestriction #-}
module Language.ECMAScript3.Syntax.CodeGen where
import Language.ECMAScript3.Syntax
import Data.Default.Class
import Data.String
script :: Default a => [Statement a] -> JavaScript a
script :: forall a. Default a => [Statement a] -> JavaScript a
script = forall a. a -> [Statement a] -> JavaScript a
Script forall a. Default a => a
def
instance Default a => IsString (Id a) where
fromString :: String -> Id a
fromString = forall a. a -> String -> Id a
Id forall a. Default a => a
def
instance Default a => IsString (Prop a) where
fromString :: String -> Prop a
fromString = forall a. a -> String -> Prop a
PropString forall a. Default a => a
def
ident :: Default a => String -> Id a
ident :: forall a. Default a => String -> Id a
ident = forall a. a -> String -> Id a
Id forall a. Default a => a
def
propId :: Default a => Id a -> Prop a
propId :: forall a. Default a => Id a -> Prop a
propId = forall a. a -> Id a -> Prop a
PropId forall a. Default a => a
def
propS :: Default a => String -> Prop a
propS :: forall a. Default a => String -> Prop a
propS = forall a. a -> String -> Prop a
PropString forall a. Default a => a
def
propN :: Default a => Integer -> Prop a
propN :: forall a. Default a => Integer -> Prop a
propN = forall a. a -> Integer -> Prop a
PropNum forall a. Default a => a
def
instance Default a => IsString (LValue a) where
fromString :: String -> LValue a
fromString = forall a. a -> String -> LValue a
LVar forall a. Default a => a
def
lvar :: Default a => String -> LValue a
lvar :: forall a. Default a => String -> LValue a
lvar = forall a. a -> String -> LValue a
LVar forall a. Default a => a
def
ldot :: Default a => Expression a -> String -> LValue a
ldot :: forall a. Default a => Expression a -> String -> LValue a
ldot = forall a. a -> Expression a -> String -> LValue a
LDot forall a. Default a => a
def
lbrack :: Default a => Expression a -> Expression a -> LValue a
lbrack :: forall a. Default a => Expression a -> Expression a -> LValue a
lbrack = forall a. a -> Expression a -> Expression a -> LValue a
LBracket forall a. Default a => a
def
instance Default a => IsString (Expression a) where
fromString :: String -> Expression a
fromString = forall a. a -> String -> Expression a
StringLit forall a. Default a => a
def
string :: Default a => String -> Expression a
string :: forall a. Default a => String -> Expression a
string = forall a. a -> String -> Expression a
StringLit forall a. Default a => a
def
regexp :: Default a => String -> Bool -> Bool -> Expression a
regexp :: forall a. Default a => String -> Bool -> Bool -> Expression a
regexp = forall a. a -> String -> Bool -> Bool -> Expression a
RegexpLit forall a. Default a => a
def
number :: Default a => Double -> Expression a
number :: forall a. Default a => Double -> Expression a
number = forall a. a -> Double -> Expression a
NumLit forall a. Default a => a
def
bool :: Default a => Bool -> Expression a
bool :: forall a. Default a => Bool -> Expression a
bool = forall a. a -> Bool -> Expression a
BoolLit forall a. Default a => a
def
int :: Default a => Int -> Expression a
int :: forall a. Default a => Int -> Expression a
int = forall a. a -> Int -> Expression a
IntLit forall a. Default a => a
def
null_ :: Default a => Expression a
null_ :: forall a. Default a => Expression a
null_ = forall a. a -> Expression a
NullLit forall a. Default a => a
def
array :: Default a => [Expression a] -> Expression a
array :: forall a. Default a => [Expression a] -> Expression a
array = forall a. a -> [Expression a] -> Expression a
ArrayLit forall a. Default a => a
def
object :: Default a => [(Prop a, Expression a)] -> Expression a
object :: forall a. Default a => [(Prop a, Expression a)] -> Expression a
object = forall a. a -> [(Prop a, Expression a)] -> Expression a
ObjectLit forall a. Default a => a
def
this :: Default a => Expression a
this :: forall a. Default a => Expression a
this = forall a. a -> Expression a
ThisRef forall a. Default a => a
def
var :: Default a => Id a -> Expression a
var :: forall a. Default a => Id a -> Expression a
var = forall a. a -> Id a -> Expression a
VarRef forall a. Default a => a
def
dot :: Default a => Expression a -> Id a -> Expression a
dot :: forall a. Default a => Expression a -> Id a -> Expression a
dot = forall a. a -> Expression a -> Id a -> Expression a
DotRef forall a. Default a => a
def
brack :: Default a => Expression a -> Expression a -> Expression a
brack :: forall a. Default a => Expression a -> Expression a -> Expression a
brack = forall a. a -> Expression a -> Expression a -> Expression a
BracketRef forall a. Default a => a
def
new :: Default a => Expression a -> [Expression a] -> Expression a
new :: forall a.
Default a =>
Expression a -> [Expression a] -> Expression a
new = forall a. a -> Expression a -> [Expression a] -> Expression a
NewExpr forall a. Default a => a
def
prefix :: Default a => PrefixOp -> Expression a -> Expression a
prefix :: forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix = forall a. a -> PrefixOp -> Expression a -> Expression a
PrefixExpr forall a. Default a => a
def
lnot :: Default a => Expression a -> Expression a
lnot :: forall a. Default a => Expression a -> Expression a
lnot = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixLNot
bnot :: Default a => Expression a -> Expression a
bnot :: forall a. Default a => Expression a -> Expression a
bnot = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixBNot
plus :: Default a => Expression a -> Expression a
plus :: forall a. Default a => Expression a -> Expression a
plus = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixPlus
minus :: Default a => Expression a -> Expression a
minus :: forall a. Default a => Expression a -> Expression a
minus = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixMinus
typeof :: Default a => Expression a -> Expression a
typeof :: forall a. Default a => Expression a -> Expression a
typeof = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixTypeof
void :: Default a => Expression a -> Expression a
void :: forall a. Default a => Expression a -> Expression a
void = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixVoid
delete :: Default a => Expression a -> Expression a
delete :: forall a. Default a => Expression a -> Expression a
delete = forall a. Default a => PrefixOp -> Expression a -> Expression a
prefix PrefixOp
PrefixDelete
uassign :: Default a => UnaryAssignOp -> LValue a -> Expression a
uassign :: forall a. Default a => UnaryAssignOp -> LValue a -> Expression a
uassign = forall a. a -> UnaryAssignOp -> LValue a -> Expression a
UnaryAssignExpr forall a. Default a => a
def
preinc :: Default a => LValue a -> Expression a
preinc :: forall a. Default a => LValue a -> Expression a
preinc = forall a. Default a => UnaryAssignOp -> LValue a -> Expression a
uassign UnaryAssignOp
PrefixInc
predec :: Default a => LValue a -> Expression a
predec :: forall a. Default a => LValue a -> Expression a
predec = forall a. Default a => UnaryAssignOp -> LValue a -> Expression a
uassign UnaryAssignOp
PrefixDec
postinc :: Default a => LValue a -> Expression a
postinc :: forall a. Default a => LValue a -> Expression a
postinc = forall a. Default a => UnaryAssignOp -> LValue a -> Expression a
uassign UnaryAssignOp
PostfixInc
postdec :: Default a => LValue a -> Expression a
postdec :: forall a. Default a => LValue a -> Expression a
postdec = forall a. Default a => UnaryAssignOp -> LValue a -> Expression a
uassign UnaryAssignOp
PostfixDec
infixe
:: Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe :: forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe = forall a.
a -> InfixOp -> Expression a -> Expression a -> Expression a
InfixExpr forall a. Default a => a
def
lt :: Default a => Expression a -> Expression a -> Expression a
lt :: forall a. Default a => Expression a -> Expression a -> Expression a
lt = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpLT
le :: Default a => Expression a -> Expression a -> Expression a
le :: forall a. Default a => Expression a -> Expression a -> Expression a
le = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpLEq
gt :: Default a => Expression a -> Expression a -> Expression a
gt :: forall a. Default a => Expression a -> Expression a -> Expression a
gt = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpGT
ge :: Default a => Expression a -> Expression a -> Expression a
ge :: forall a. Default a => Expression a -> Expression a -> Expression a
ge = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpGEq
in_ :: Default a => Expression a -> Expression a -> Expression a
in_ :: forall a. Default a => Expression a -> Expression a -> Expression a
in_= forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpIn
instanceof
:: Default a => Expression a -> Expression a -> Expression a
instanceof :: forall a. Default a => Expression a -> Expression a -> Expression a
instanceof = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpInstanceof
eq :: Default a => Expression a -> Expression a -> Expression a
eq :: forall a. Default a => Expression a -> Expression a -> Expression a
eq = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpEq
neq :: Default a => Expression a -> Expression a -> Expression a
neq :: forall a. Default a => Expression a -> Expression a -> Expression a
neq = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpNEq
steq :: Default a => Expression a -> Expression a -> Expression a
steq :: forall a. Default a => Expression a -> Expression a -> Expression a
steq = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpStrictEq
stneq :: Default a => Expression a -> Expression a -> Expression a
stneq :: forall a. Default a => Expression a -> Expression a -> Expression a
stneq = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpStrictNEq
land :: Default a => Expression a -> Expression a -> Expression a
land :: forall a. Default a => Expression a -> Expression a -> Expression a
land = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpLAnd
lor :: Default a => Expression a -> Expression a -> Expression a
lor :: forall a. Default a => Expression a -> Expression a -> Expression a
lor = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpLOr
mul :: Default a => Expression a -> Expression a -> Expression a
mul :: forall a. Default a => Expression a -> Expression a -> Expression a
mul = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpMul
div :: Default a => Expression a -> Expression a -> Expression a
div :: forall a. Default a => Expression a -> Expression a -> Expression a
div = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpDiv
mod :: Default a => Expression a -> Expression a -> Expression a
mod :: forall a. Default a => Expression a -> Expression a -> Expression a
mod = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpMod
sub :: Default a => Expression a -> Expression a -> Expression a
sub :: forall a. Default a => Expression a -> Expression a -> Expression a
sub = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpSub
lshift :: Default a => Expression a -> Expression a -> Expression a
lshift :: forall a. Default a => Expression a -> Expression a -> Expression a
lshift = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpLShift
srshift
:: Default a => Expression a -> Expression a -> Expression a
srshift :: forall a. Default a => Expression a -> Expression a -> Expression a
srshift = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpSpRShift
zrshift
:: Default a => Expression a -> Expression a -> Expression a
zrshift :: forall a. Default a => Expression a -> Expression a -> Expression a
zrshift = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpZfRShift
band :: Default a => Expression a -> Expression a -> Expression a
band :: forall a. Default a => Expression a -> Expression a -> Expression a
band = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpBAnd
bor :: Default a => Expression a -> Expression a -> Expression a
bor :: forall a. Default a => Expression a -> Expression a -> Expression a
bor = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpBOr
xor :: Default a => Expression a -> Expression a -> Expression a
xor :: forall a. Default a => Expression a -> Expression a -> Expression a
xor = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpBXor
add :: Default a => Expression a -> Expression a -> Expression a
add :: forall a. Default a => Expression a -> Expression a -> Expression a
add = forall a.
Default a =>
InfixOp -> Expression a -> Expression a -> Expression a
infixe InfixOp
OpAdd
cond
:: Default a =>
Expression a -> Expression a -> Expression a -> Expression a
cond :: forall a.
Default a =>
Expression a -> Expression a -> Expression a -> Expression a
cond = forall a.
a -> Expression a -> Expression a -> Expression a -> Expression a
CondExpr forall a. Default a => a
def
assignop :: Default a => AssignOp -> LValue a -> Expression a -> Expression a
assignop :: forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop = forall a. a -> AssignOp -> LValue a -> Expression a -> Expression a
AssignExpr forall a. Default a => a
def
assign
:: Default a => LValue a -> Expression a -> Expression a
assign :: forall a. Default a => LValue a -> Expression a -> Expression a
assign = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssign
assignadd :: Default a => LValue a -> Expression a -> Expression a
assignadd :: forall a. Default a => LValue a -> Expression a -> Expression a
assignadd = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignAdd
assignsub :: Default a => LValue a -> Expression a -> Expression a
assignsub :: forall a. Default a => LValue a -> Expression a -> Expression a
assignsub = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignSub
assignmul :: Default a => LValue a -> Expression a -> Expression a
assignmul :: forall a. Default a => LValue a -> Expression a -> Expression a
assignmul = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignMul
assigndiv :: Default a => LValue a -> Expression a -> Expression a
assigndiv :: forall a. Default a => LValue a -> Expression a -> Expression a
assigndiv = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignDiv
assignmod :: Default a => LValue a -> Expression a -> Expression a
assignmod :: forall a. Default a => LValue a -> Expression a -> Expression a
assignmod = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignMod
assignlshift
:: Default a => LValue a -> Expression a -> Expression a
assignlshift :: forall a. Default a => LValue a -> Expression a -> Expression a
assignlshift = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignLShift
assignsrshift
:: Default a => LValue a -> Expression a -> Expression a
assignsrshift :: forall a. Default a => LValue a -> Expression a -> Expression a
assignsrshift = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignSpRShift
assignzrshift
:: Default a => LValue a -> Expression a -> Expression a
assignzrshift :: forall a. Default a => LValue a -> Expression a -> Expression a
assignzrshift = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignZfRShift
assignband :: Default a => LValue a -> Expression a -> Expression a
assignband :: forall a. Default a => LValue a -> Expression a -> Expression a
assignband = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignBAnd
assignxor :: Default a => LValue a -> Expression a -> Expression a
assignxor :: forall a. Default a => LValue a -> Expression a -> Expression a
assignxor = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignBXor
assignbor :: Default a => LValue a -> Expression a -> Expression a
assignbor :: forall a. Default a => LValue a -> Expression a -> Expression a
assignbor = forall a.
Default a =>
AssignOp -> LValue a -> Expression a -> Expression a
assignop AssignOp
OpAssignBOr
list :: Default a => [Expression a] -> Expression a
list :: forall a. Default a => [Expression a] -> Expression a
list = forall a. a -> [Expression a] -> Expression a
ListExpr forall a. Default a => a
def
call :: Default a => Expression a -> [Expression a] -> Expression a
call :: forall a.
Default a =>
Expression a -> [Expression a] -> Expression a
call = forall a. a -> Expression a -> [Expression a] -> Expression a
CallExpr forall a. Default a => a
def
func
:: Default a => Id a -> [Id a] -> [Statement a] -> Expression a
func :: forall a.
Default a =>
Id a -> [Id a] -> [Statement a] -> Expression a
func Id a
id = forall a.
a -> Maybe (Id a) -> [Id a] -> [Statement a] -> Expression a
FuncExpr forall a. Default a => a
def (forall a. a -> Maybe a
Just Id a
id)
lambda :: Default a => [Id a] -> [Statement a] -> Expression a
lambda :: forall a. Default a => [Id a] -> [Statement a] -> Expression a
lambda = forall a.
a -> Maybe (Id a) -> [Id a] -> [Statement a] -> Expression a
FuncExpr forall a. Default a => a
def forall a. Maybe a
Nothing
casee :: Default a => Expression a -> [Statement a] -> CaseClause a
casee :: forall a.
Default a =>
Expression a -> [Statement a] -> CaseClause a
casee = forall a. a -> Expression a -> [Statement a] -> CaseClause a
CaseClause forall a. Default a => a
def
defaultc :: Default a => [Statement a] -> CaseClause a
defaultc :: forall a. Default a => [Statement a] -> CaseClause a
defaultc = forall a. a -> [Statement a] -> CaseClause a
CaseDefault forall a. Default a => a
def
catch :: Default a => Id a -> Statement a -> CatchClause a
catch :: forall a. Default a => Id a -> Statement a -> CatchClause a
catch = forall a. a -> Id a -> Statement a -> CatchClause a
CatchClause forall a. Default a => a
def
vardecl :: Default a => Id a -> VarDecl a
vardecl :: forall a. Default a => Id a -> VarDecl a
vardecl Id a
id = forall a. a -> Id a -> Maybe (Expression a) -> VarDecl a
VarDecl forall a. Default a => a
def Id a
id forall a. Maybe a
Nothing
varinit :: Default a => Id a -> Expression a -> VarDecl a
varinit :: forall a. Default a => Id a -> Expression a -> VarDecl a
varinit Id a
id = forall a. a -> Id a -> Maybe (Expression a) -> VarDecl a
VarDecl forall a. Default a => a
def Id a
id forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a
Just
block :: Default a => [Statement a] -> Statement a
block :: forall a. Default a => [Statement a] -> Statement a
block = forall a. a -> [Statement a] -> Statement a
BlockStmt forall a. Default a => a
def
empty :: Default a => Statement a
empty :: forall a. Default a => Statement a
empty = forall a. a -> Statement a
EmptyStmt forall a. Default a => a
def
expr :: Default a => Expression a -> Statement a
expr :: forall a. Default a => Expression a -> Statement a
expr = forall a. a -> Expression a -> Statement a
ExprStmt forall a. Default a => a
def
ifte
:: Default a =>
Expression a -> Statement a -> Statement a -> Statement a
ifte :: forall a.
Default a =>
Expression a -> Statement a -> Statement a -> Statement a
ifte = forall a.
a -> Expression a -> Statement a -> Statement a -> Statement a
IfStmt forall a. Default a => a
def
ift :: Default a => Expression a -> Statement a -> Statement a
ift :: forall a. Default a => Expression a -> Statement a -> Statement a
ift = forall a. a -> Expression a -> Statement a -> Statement a
IfSingleStmt forall a. Default a => a
def
switch
:: Default a => Expression a -> [CaseClause a] -> Statement a
switch :: forall a.
Default a =>
Expression a -> [CaseClause a] -> Statement a
switch = forall a. a -> Expression a -> [CaseClause a] -> Statement a
SwitchStmt forall a. Default a => a
def
while :: Default a => Expression a -> Statement a -> Statement a
while :: forall a. Default a => Expression a -> Statement a -> Statement a
while = forall a. a -> Expression a -> Statement a -> Statement a
WhileStmt forall a. Default a => a
def
dowhile :: Default a => Statement a -> Expression a -> Statement a
dowhile :: forall a. Default a => Statement a -> Expression a -> Statement a
dowhile = forall a. a -> Statement a -> Expression a -> Statement a
DoWhileStmt forall a. Default a => a
def
break :: Default a => Maybe (Id a) -> Statement a
break :: forall a. Default a => Maybe (Id a) -> Statement a
break = forall a. a -> Maybe (Id a) -> Statement a
BreakStmt forall a. Default a => a
def
continue :: Default a => Maybe (Id a) -> Statement a
continue :: forall a. Default a => Maybe (Id a) -> Statement a
continue = forall a. a -> Maybe (Id a) -> Statement a
ContinueStmt forall a. Default a => a
def
label :: Default a => Id a -> Statement a -> Statement a
label :: forall a. Default a => Id a -> Statement a -> Statement a
label = forall a. a -> Id a -> Statement a -> Statement a
LabelledStmt forall a. Default a => a
def
forin
:: Default a =>
ForInInit a -> Expression a -> Statement a -> Statement a
forin :: forall a.
Default a =>
ForInInit a -> Expression a -> Statement a -> Statement a
forin = forall a.
a -> ForInInit a -> Expression a -> Statement a -> Statement a
ForInStmt forall a. Default a => a
def
for
:: Default a =>
ForInit a
-> Maybe (Expression a)
-> Maybe (Expression a)
-> Statement a
-> Statement a
for :: forall a.
Default a =>
ForInit a
-> Maybe (Expression a)
-> Maybe (Expression a)
-> Statement a
-> Statement a
for = forall a.
a
-> ForInit a
-> Maybe (Expression a)
-> Maybe (Expression a)
-> Statement a
-> Statement a
ForStmt forall a. Default a => a
def
try :: Default a => Statement a -> Statement a
try :: forall a. Default a => Statement a -> Statement a
try Statement a
b = forall a.
a
-> Statement a
-> Maybe (CatchClause a)
-> Maybe (Statement a)
-> Statement a
TryStmt forall a. Default a => a
def Statement a
b forall a. Maybe a
Nothing forall a. Maybe a
Nothing
trycatch
:: Default a =>
Statement a -> CatchClause a -> Maybe (Statement a) -> Statement a
trycatch :: forall a.
Default a =>
Statement a -> CatchClause a -> Maybe (Statement a) -> Statement a
trycatch Statement a
b CatchClause a
c = forall a.
a
-> Statement a
-> Maybe (CatchClause a)
-> Maybe (Statement a)
-> Statement a
TryStmt forall a. Default a => a
def Statement a
b (forall a. a -> Maybe a
Just CatchClause a
c)
tryfinally
:: Default a => Statement a -> Statement a -> Statement a
tryfinally :: forall a. Default a => Statement a -> Statement a -> Statement a
tryfinally Statement a
b Statement a
f = forall a.
a
-> Statement a
-> Maybe (CatchClause a)
-> Maybe (Statement a)
-> Statement a
TryStmt forall a. Default a => a
def Statement a
b forall a. Maybe a
Nothing (forall a. a -> Maybe a
Just Statement a
f)
trycatchfinally
:: Default a =>
Statement a -> CatchClause a -> Statement a -> Statement a
trycatchfinally :: forall a.
Default a =>
Statement a -> CatchClause a -> Statement a -> Statement a
trycatchfinally Statement a
b CatchClause a
c Statement a
f = forall a.
a
-> Statement a
-> Maybe (CatchClause a)
-> Maybe (Statement a)
-> Statement a
TryStmt forall a. Default a => a
def Statement a
b (forall a. a -> Maybe a
Just CatchClause a
c) (forall a. a -> Maybe a
Just Statement a
f)
throw :: Default a => Expression a -> Statement a
throw :: forall a. Default a => Expression a -> Statement a
throw = forall a. a -> Expression a -> Statement a
ThrowStmt forall a. Default a => a
def
returns :: Default a => Expression a -> Statement a
returns :: forall a. Default a => Expression a -> Statement a
returns = forall a. a -> Maybe (Expression a) -> Statement a
ReturnStmt forall a. Default a => a
def forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a
Just
ret :: Default a => Statement a
ret :: forall a. Default a => Statement a
ret = forall a. a -> Maybe (Expression a) -> Statement a
ReturnStmt forall a. Default a => a
def forall a. Maybe a
Nothing
with :: Default a => Expression a -> Statement a -> Statement a
with :: forall a. Default a => Expression a -> Statement a -> Statement a
with = forall a. a -> Expression a -> Statement a -> Statement a
WithStmt forall a. Default a => a
def
vardecls :: Default a => [VarDecl a] -> Statement a
vardecls :: forall a. Default a => [VarDecl a] -> Statement a
vardecls = forall a. a -> [VarDecl a] -> Statement a
VarDeclStmt forall a. Default a => a
def
function
:: Default a => Id a -> [Id a] -> [Statement a] -> Statement a
function :: forall a.
Default a =>
Id a -> [Id a] -> [Statement a] -> Statement a
function = forall a. a -> Id a -> [Id a] -> [Statement a] -> Statement a
FunctionStmt forall a. Default a => a
def
id2string :: Id a -> Expression a
id2string :: forall a. Id a -> Expression a
id2string (Id a
a String
s) = forall a. a -> String -> Expression a
StringLit a
a String
s
lv2e :: LValue a -> Expression a
lv2e :: forall a. LValue a -> Expression a
lv2e LValue a
lval = case LValue a
lval of
LVar a
a String
vname -> forall a. a -> Id a -> Expression a
VarRef a
a (forall a. a -> String -> Id a
Id a
a String
vname)
LDot a
a Expression a
obj String
fname -> forall a. a -> Expression a -> Id a -> Expression a
DotRef a
a Expression a
obj (forall a. a -> String -> Id a
Id a
a String
fname)
LBracket a
a Expression a
obj Expression a
field -> forall a. a -> Expression a -> Expression a -> Expression a
BracketRef a
a Expression a
obj Expression a
field
e2lv :: Expression a -> LValue a
e2lv :: forall a. Expression a -> LValue a
e2lv Expression a
e = case Expression a
e of
VarRef a
a (Id a
_ String
vname) -> forall a. a -> String -> LValue a
LVar a
a String
vname
DotRef a
a Expression a
obj (Id a
_ String
fname) -> forall a. a -> Expression a -> String -> LValue a
LDot a
a Expression a
obj String
fname
BracketRef a
a Expression a
obj Expression a
field -> forall a. a -> Expression a -> Expression a -> LValue a
LBracket a
a Expression a
obj Expression a
field
Expression a
_ -> forall a. HasCallStack => String -> a
error String
"expr2LVal: Can't convert an expression to an LValue"
forInInit2lv :: ForInInit a -> LValue a
forInInit2lv :: forall a. ForInInit a -> LValue a
forInInit2lv ForInInit a
i = case ForInInit a
i of
ForInVar (Id a
a String
s) -> forall a. a -> String -> LValue a
LVar a
a String
s
ForInLVal LValue a
lv -> LValue a
lv