ecma262-0.0.0: src/Language/JavaScript/AST.hs
module Language.JavaScript.AST
where
data IdentName =
IdentName String
deriving (Eq, Show)
data Ident =
Ident IdentName
deriving (Eq, Show)
data Literal
= LiteralNull NullLit
| LiteralBool BoolLit
| LiteralNum NumLit
| LiteralString StringLit
| LiteralRegExp RegExpLit
deriving (Eq, Show)
data NullLit
= NullLit
deriving (Eq, Show)
data BoolLit
= BoolLit Bool
deriving (Eq, Show)
data NumLit
= NumLit Double
deriving (Eq, Show)
data StringLit
= StringLit String
deriving (Eq, Show)
data RegExpLit
= RegExpLit (String, String)
deriving (Eq, Show)
data PrimExpr
= PrimExprThis
| PrimExprIdent Ident
| PrimExprLiteral Literal
| PrimExprArray ArrayLit
| PrimExprObject ObjectLit
| PrimExprParens Expr
deriving (Eq, Show)
data ArrayLit
= ArrayLitH (Maybe Elision)
| ArrayLit ElementList
| ArrayLitT ElementList (Maybe Elision)
deriving (Eq, Show)
data ElementList
= ElementList (Maybe Elision) AssignExpr
| ElementListCons ElementList (Maybe Elision) AssignExpr
deriving (Eq, Show)
data Elision
= ElisionComma
| ElisionCons Elision
deriving (Eq, Show)
data ObjectLit
= ObjectLitEmpty
| ObjectLit PropList
deriving (Eq, Show)
data PropList
= PropListAssign PropAssign
| PropListCons PropList PropAssign
deriving (Eq, Show)
data PropAssign
= PropAssignField PropName AssignExpr
| PropAssignGet PropName FuncBody
| PropAssignSet PropName PropSetParamList FuncBody
deriving (Eq, Show)
data PropSetParamList
= PropSetParamList Ident
deriving (Eq, Show)
data PropName
= PropNameId IdentName
| PropNameStr StringLit
| PropNameNum NumLit
deriving (Eq, Show)
data MemberExpr
= MemberExprPrim PrimExpr
| MemberExprFunc FuncExpr
| MemberExprArray MemberExpr Expr
| MemberExprDot MemberExpr IdentName
| MemberExprNew MemberExpr Arguments
deriving (Eq, Show)
data NewExpr
= NewExprMember MemberExpr
| NewExprNew NewExpr
deriving (Eq, Show)
data CallExpr
= CallExprMember MemberExpr Arguments
| CallExprCall CallExpr Arguments
| CallExprArray CallExpr Expr
| CallExprDot CallExpr IdentName
deriving (Eq, Show)
data Arguments
= ArgumentsEmpty
| Arguments ArgumentList
deriving (Eq, Show)
data ArgumentList
= ArgumentList AssignExpr
| ArgumentListCons ArgumentList AssignExpr
deriving (Eq, Show)
data LeftExpr
= LeftExprNewExpr NewExpr
| LeftExprCallExpr CallExpr
deriving (Eq, Show)
data PostFixExpr
= PostFixExprLeftExpr LeftExpr
| PostFixExprPostInc LeftExpr
| PostFixExprPostDec LeftExpr
deriving (Eq, Show)
data UExpr
= UExprPostFix PostFixExpr
| UExprDelete UExpr
| UExprVoid UExpr
| UExprTypeOf UExpr
| UExprDoublePlus UExpr
| UExprDoubleMinus UExpr
| UExprUnaryPlus UExpr
| UExprUnaryMinus UExpr
| UExprBitNot UExpr
| UExprNot UExpr
deriving (Eq, Show)
data MultExpr
= MultExpr UExpr
| MultExprMult MultExpr UExpr
| MultExprDiv MultExpr UExpr
| MultExprMod MultExpr UExpr
deriving (Eq, Show)
data AddExpr
= AddExpr MultExpr
| AddExprAdd AddExpr MultExpr
| AddExprSub AddExpr MultExpr
deriving (Eq, Show)
data ShiftExpr
= ShiftExpr AddExpr
| ShiftExprLeft ShiftExpr AddExpr
| ShiftExprRight ShiftExpr AddExpr
| ShiftExprRightZero ShiftExpr AddExpr
deriving (Eq, Show)
data RelExpr
= RelExpr ShiftExpr
| RelExprLess RelExpr ShiftExpr
| RelExprGreater RelExpr ShiftExpr
| RelExprLessEq RelExpr ShiftExpr
| RelExprGreaterEq RelExpr ShiftExpr
| RelExprInstanceOf RelExpr ShiftExpr
| RelExprIn RelExpr ShiftExpr
deriving (Eq, Show)
data RelExprNoIn
= RelExprNoIn ShiftExpr
| RelExprNoInLess RelExprNoIn ShiftExpr
| RelExprNoInGreater RelExprNoIn ShiftExpr
| RelExprNoInLessEq RelExprNoIn ShiftExpr
| RelExprNoInGreaterEq RelExprNoIn ShiftExpr
| RelExprNoInInstanceOf RelExprNoIn ShiftExpr
deriving (Eq, Show)
data EqExpr
= EqExpr RelExpr
| EqExprEq EqExpr RelExpr
| EqExprNotEq EqExpr RelExpr
| EqExprStrictEq EqExpr RelExpr
| EqExprStrictNotEq EqExpr RelExpr
deriving (Eq, Show)
data EqExprNoIn
= EqExprNoIn RelExprNoIn
| EqExprNoInEq EqExprNoIn RelExprNoIn
| EqExprNoInNotEq EqExprNoIn RelExprNoIn
| EqExprNoInStrictEq EqExprNoIn RelExprNoIn
| EqExprNoInStrictNotEq EqExprNoIn RelExprNoIn
deriving (Eq, Show)
data BitAndExpr
= BitAndExpr EqExpr
| BitAndExprAnd BitAndExpr EqExpr
deriving (Eq, Show)
data BitAndExprNoIn
= BitAndExprNoIn EqExprNoIn
| BitAndExprNoInAnd BitAndExprNoIn EqExprNoIn
deriving (Eq, Show)
data BitXorExpr
= BitXorExpr BitAndExpr
| BitXorExprXor BitXorExpr BitAndExpr
deriving (Eq, Show)
data BitXorExprNoIn
= BitXorExprNoIn BitAndExprNoIn
| BitXorExprNoInXor BitXorExprNoIn BitAndExprNoIn
deriving (Eq, Show)
data BitOrExpr
= BitOrExpr BitXorExpr
| BitOrExprOr BitOrExpr BitXorExpr
deriving (Eq, Show)
data BitOrExprNoIn
= BitOrExprNoIn BitXorExprNoIn
| BitOrExprNoInOr BitOrExprNoIn BitXorExprNoIn
deriving (Eq, Show)
data LogicalAndExpr
= LogicalAndExpr BitOrExpr
| LogicalAndExprAnd LogicalAndExpr BitOrExpr
deriving (Eq, Show)
data LogicalAndExprNoIn
= LogicalAndExprNoIn BitOrExprNoIn
| LogicalAndExprNoInAnd LogicalAndExprNoIn BitOrExprNoIn
deriving (Eq, Show)
data LogicalOrExpr
= LogicalOrExpr LogicalAndExpr
| LogicalOrExprOr LogicalOrExpr LogicalAndExpr
deriving (Eq, Show)
data LogicalOrExprNoIn
= LogicalOrExprNoIn LogicalAndExprNoIn
| LogicalOrExprNoInOr LogicalOrExprNoIn LogicalAndExprNoIn
deriving (Eq, Show)
data CondExpr
= CondExpr LogicalOrExpr
| CondExprIf LogicalOrExpr AssignExpr AssignExpr
deriving (Eq, Show)
data CondExprNoIn
= CondExprNoIn LogicalOrExprNoIn
| CondExprNoInIf LogicalOrExprNoIn AssignExpr AssignExpr
deriving (Eq, Show)
data AssignExpr
= AssignExprCondExpr CondExpr
| AssignExprAssign LeftExpr AssignOp AssignExpr
deriving (Eq, Show)
data AssignExprNoIn
= AssignExprNoInCondExpr CondExprNoIn
| AssignExprNoInAssign LeftExpr AssignOp AssignExprNoIn
deriving (Eq, Show)
data AssignOp
= AssignOpNormal
| AssignOpMult
| AssignOpDiv
| AssignOpMod
| AssignOpPlus
| AssignOpMinus
| AssignOpShiftLeft
| AssignOpShiftRight
| AssignOpShiftRightZero
| AssignOpBitAnd
| AssignOpBitXor
| AssignOpBitOr
deriving (Eq, Show)
data Expr
= Expr AssignExpr
| ExprCons Expr AssignExpr
deriving (Eq, Show)
data ExprNoIn
= ExprNoIn AssignExprNoIn
| ExprNoInCons ExprNoIn AssignExprNoIn
deriving (Eq, Show)
data Stmt
= StmtBlock Block
| StmtVar VarStmt
| StmtEmpty EmptyStmt
| StmtExpr ExprStmt
| StmtIf IfStmt
| StmtIt ItStmt
| StmtCont ContStmt
| StmtBreak BreakStmt
| StmtReturn ReturnStmt
| StmtWith WithStmt
| StmtLabelled LabelledStmt
| StmtSwitch SwitchStmt
| StmtThrow ThrowStmt
| StmtTry TryStmt
| StmtDbg DbgStmt
deriving (Eq, Show)
data Block
= Block (Maybe StmtList)
deriving (Eq, Show)
data StmtList
= StmtList Stmt
| StmtListCons StmtList Stmt
deriving (Eq, Show)
data VarStmt
= VarStmt VarDeclList
deriving (Eq, Show)
data VarDeclList
= VarDeclList VarDecl
| VarDeclListCons VarDeclList VarDecl
deriving (Eq, Show)
data VarDeclListNoIn
= VarDeclListNoIn VarDeclNoIn
| VarDeclListNoInCons VarDeclListNoIn VarDeclNoIn
deriving (Eq, Show)
data VarDecl
= VarDecl Ident (Maybe Initialiser)
deriving (Eq, Show)
data VarDeclNoIn
= VarDeclNoIn Ident (Maybe InitialiserNoIn)
deriving (Eq, Show)
data Initialiser
= Initialiser AssignExpr
deriving (Eq, Show)
data InitialiserNoIn
= InitialiserNoIn AssignExprNoIn
deriving (Eq, Show)
data EmptyStmt
= EmptyStmt
deriving (Eq, Show)
data ExprStmt
= ExprStmt Expr
deriving (Eq, Show)
data IfStmt
= IfStmtIfElse Expr Stmt Stmt
| IfStmtIf Expr Stmt
deriving (Eq, Show)
data ItStmt
= ItStmtDoWhile Stmt Expr
| ItStmtWhile Expr Stmt
| ItStmtFor (Maybe ExprNoIn) (Maybe Expr) (Maybe Expr) Stmt
| ItStmtForVar VarDeclListNoIn (Maybe Expr) (Maybe Expr) Stmt
| ItStmtForIn LeftExpr Expr Stmt
| ItStmtForVarIn VarDeclNoIn Expr Stmt
deriving (Eq, Show)
data ContStmt
= ContStmt
| ContStmtLabelled Ident
deriving (Eq, Show)
data BreakStmt
= BreakStmt
| BreakStmtLabelled Ident
deriving (Eq, Show)
data ReturnStmt
= ReturnStmt
| ReturnStmtExpr Expr
deriving (Eq, Show)
data WithStmt
= WithStmt Expr Stmt
deriving (Eq, Show)
data SwitchStmt
= SwitchStmt Expr CaseBlock
deriving (Eq, Show)
data CaseBlock
= CaseBlock (Maybe CaseClauses)
| CaseBlockDefault (Maybe CaseClauses) DefaultClause (Maybe CaseClauses)
deriving (Eq, Show)
data CaseClauses
= CaseClauses CaseClause
| CaseClausesCons CaseClauses CaseClause
deriving (Eq, Show)
data CaseClause
= CaseClause Expr (Maybe StmtList)
deriving (Eq, Show)
data DefaultClause
= DefaultClause (Maybe StmtList)
deriving (Eq, Show)
data LabelledStmt
= LabelledStmt Ident Stmt
deriving (Eq, Show)
data ThrowStmt
= ThrowStmt Expr
deriving (Eq, Show)
data TryStmt
= TryStmtBC Block Catch
| TryStmtBF Block Finally
| TryStmtBCF Block Catch Finally
deriving (Eq, Show)
data Catch
= Catch Ident Block
deriving (Eq, Show)
data Finally
= Finally Block
deriving (Eq, Show)
data DbgStmt
= DbgStmt
deriving (Eq, Show)
data FuncDecl
= FuncDecl Ident (Maybe FormalParamList) FuncBody
deriving (Eq, Show)
data FuncExpr
= FuncExpr (Maybe Ident) (Maybe FormalParamList) FuncBody
deriving (Eq, Show)
data FormalParamList
= FormalParamList Ident
| FormalParamListCons FormalParamList Ident
deriving (Eq, Show)
data FuncBody =
FuncBody (Maybe SourceElements)
deriving (Eq, Show)
data Program =
Program (Maybe SourceElements)
deriving (Eq, Show)
data SourceElements
= SourceElements SourceElement
| SourceElementsCons SourceElements SourceElement
deriving (Eq, Show)
data SourceElement
= SourceElementStmt Stmt
| SourceElementFuncDecl FuncDecl
deriving (Eq, Show)