module Language.JS.Types where
data ObjectProperty = OPI Expression
| OPKV Expression Expression
| OP Expression
| OPM Expression
deriving (Show)
type IsPrefix = Bool
data SwitchCase = Case Expression | DefaultCase
deriving (Show)
type ExpressionOpt = Maybe Expression
type StatementOpt = Maybe Statement
data ForStyle = ForIn BindExpression Expression
| ForInV String BindExpression Expression
| ForOf BindExpression Expression
| ForOfV String BindExpression Expression
| ForRegular (Maybe BindExpression) ExpressionOpt ExpressionOpt
deriving (Show)
data ImportClause = Namespace Expression
| DefaultName Expression
| BindNames [Expression]
deriving (Show)
data BindExpression = BindVar Expression (Maybe Expression)
| BindPattern Expression (Maybe Expression)
| BindRest Expression
deriving (Show)
data Expression =
LThis
| LNull
| LI String
| LN String
| LS String
| LTS String
| LB Bool
| RegExp String String
| UnaryUpdate String IsPrefix Expression
| Unary String Expression
| Spread Expression
| LA [Expression]
| LO [ObjectProperty]
| LP Expression
| Condition Expression Expression Expression
| Assignment String Expression Expression
| Operation String Expression Expression
| Function ExpressionOpt [BindExpression] Statement
| Arrow (Either BindExpression [BindExpression]) Statement
| Class ExpressionOpt ExpressionOpt Statement
| ClassProperty Expression Expression
| PropertyMethod Expression [BindExpression] Statement
| ClassStatic Expression
| ClassGetMethod Expression
| ClassSetMethod Expression
| Async Expression
| Dot Expression Expression
| Acc Expression Expression
| FCall Expression [Expression]
| New Expression
| Comma Expression Expression
| Empty
| Comment String
| MultilineComment String
deriving (Show)
data Statement = SExp Expression
| SImportFile Expression
| SImport (Either ImportClause [ImportClause]) Expression
| SRExport Expression Expression
| SExport Statement
| SExportDefault Expression
| SC String ExpressionOpt Statement
| SF String [BindExpression] Statement
| SVariable String [BindExpression]
| SWhile [Expression] Statement
| SDoWhile Statement [Expression]
| SFor ForStyle Statement
| SLabel Expression Statement
| SDebugger
| SContinue ExpressionOpt
| SBreak ExpressionOpt
| SBlock [Statement]
| SIf Expression Statement StatementOpt
| SSwitch Expression [Statement]
| SCase [SwitchCase] [Statement]
| SThrow Expression
| STry Statement Statement StatementOpt
| SCatch ExpressionOpt Statement
| SFinally Statement
| SReturn Expression
| SWith Expression Statement
deriving (Show)