| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.ECMAScript3.Syntax
Contents
Description
ECMAScript 3 syntax. Spec refers to the ECMA-262 specification, 3rd edition.
Synopsis
- data JavaScript a = Script a [Statement a]
- unJavaScript :: JavaScript a -> [Statement a]
- data Statement a
- = BlockStmt a [Statement a]
- | EmptyStmt a
- | ExprStmt a (Expression a)
- | IfStmt a (Expression a) (Statement a) (Statement a)
- | IfSingleStmt a (Expression a) (Statement a)
- | SwitchStmt a (Expression a) [CaseClause a]
- | WhileStmt a (Expression a) (Statement a)
- | DoWhileStmt a (Statement a) (Expression a)
- | BreakStmt a (Maybe (Id a))
- | ContinueStmt a (Maybe (Id a))
- | LabelledStmt a (Id a) (Statement a)
- | ForInStmt a (ForInInit a) (Expression a) (Statement a)
- | ForStmt a (ForInit a) (Maybe (Expression a)) (Maybe (Expression a)) (Statement a)
- | TryStmt a (Statement a) (Maybe (CatchClause a)) (Maybe (Statement a))
- | ThrowStmt a (Expression a)
- | ReturnStmt a (Maybe (Expression a))
- | WithStmt a (Expression a) (Statement a)
- | VarDeclStmt a [VarDecl a]
- | FunctionStmt a (Id a) [Id a] [Statement a]
- isIterationStmt :: Statement a -> Bool
- data CaseClause a
- = CaseClause a (Expression a) [Statement a]
- | CaseDefault a [Statement a]
- data CatchClause a = CatchClause a (Id a) (Statement a)
- data ForInit a
- = NoInit
- | VarInit [VarDecl a]
- | ExprInit (Expression a)
- data ForInInit a
- data VarDecl a = VarDecl a (Id a) (Maybe (Expression a))
- data Expression a
- = StringLit a String
- | RegexpLit a String Bool Bool
- | NumLit a Double
- | IntLit a Int
- | BoolLit a Bool
- | NullLit a
- | ArrayLit a [Expression a]
- | ObjectLit a [(Prop a, Expression a)]
- | ThisRef a
- | VarRef a (Id a)
- | DotRef a (Expression a) (Id a)
- | BracketRef a (Expression a) (Expression a)
- | NewExpr a (Expression a) [Expression a]
- | PrefixExpr a PrefixOp (Expression a)
- | UnaryAssignExpr a UnaryAssignOp (LValue a)
- | InfixExpr a InfixOp (Expression a) (Expression a)
- | CondExpr a (Expression a) (Expression a) (Expression a)
- | AssignExpr a AssignOp (LValue a) (Expression a)
- | ListExpr a [Expression a]
- | CallExpr a (Expression a) [Expression a]
- | FuncExpr a (Maybe (Id a)) [Id a] [Statement a]
- data InfixOp
- = OpLT
- | OpLEq
- | OpGT
- | OpGEq
- | OpIn
- | OpInstanceof
- | OpEq
- | OpNEq
- | OpStrictEq
- | OpStrictNEq
- | OpLAnd
- | OpLOr
- | OpMul
- | OpDiv
- | OpMod
- | OpSub
- | OpLShift
- | OpSpRShift
- | OpZfRShift
- | OpBAnd
- | OpBXor
- | OpBOr
- | OpAdd
- data AssignOp
- data Id a = Id a String
- unId :: Id a -> String
- data PrefixOp
- data Prop a
- data UnaryAssignOp
- data LValue a
- = LVar a String
- | LDot a (Expression a) String
- | LBracket a (Expression a) (Expression a)
- data SourcePos
- isValid :: forall a. (Data a, Typeable a) => JavaScript a -> Bool
- isValidIdentifier :: Id a -> Bool
- isValidIdentifierName :: String -> Bool
- isReservedWord :: String -> Bool
- isValidIdStart :: Char -> Bool
- isValidIdPart :: Char -> Bool
- data EnclosingStatement
- = EnclosingIter [Label]
- | EnclosingSwitch [Label]
- | EnclosingOther [Label]
- pushLabel :: Monad m => Id b -> StateT ([Label], [EnclosingStatement]) m a -> StateT ([Label], [EnclosingStatement]) m a
- pushEnclosing :: Monad m => ([Label] -> EnclosingStatement) -> StateT ([Label], [EnclosingStatement]) m a -> StateT ([Label], [EnclosingStatement]) m a
- class HasLabelSet a where
- getLabelSet :: a -> [Label]
- setLabelSet :: [Label] -> a -> a
- isIter :: EnclosingStatement -> Bool
- isIterSwitch :: EnclosingStatement -> Bool
Documentation
data JavaScript a #
Instances
| Functor JavaScript # | |
Defined in Language.ECMAScript3.Syntax Methods fmap :: (a -> b) -> JavaScript a -> JavaScript b # (<$) :: a -> JavaScript b -> JavaScript a # | |
| Foldable JavaScript # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => JavaScript m -> m # foldMap :: Monoid m => (a -> m) -> JavaScript a -> m # foldr :: (a -> b -> b) -> b -> JavaScript a -> b # foldr' :: (a -> b -> b) -> b -> JavaScript a -> b # foldl :: (b -> a -> b) -> b -> JavaScript a -> b # foldl' :: (b -> a -> b) -> b -> JavaScript a -> b # foldr1 :: (a -> a -> a) -> JavaScript a -> a # foldl1 :: (a -> a -> a) -> JavaScript a -> a # toList :: JavaScript a -> [a] # null :: JavaScript a -> Bool # length :: JavaScript a -> Int # elem :: Eq a => a -> JavaScript a -> Bool # maximum :: Ord a => JavaScript a -> a # minimum :: Ord a => JavaScript a -> a # sum :: Num a => JavaScript a -> a # product :: Num a => JavaScript a -> a # | |
| Traversable JavaScript # | |
Defined in Language.ECMAScript3.Syntax Methods traverse :: Applicative f => (a -> f b) -> JavaScript a -> f (JavaScript b) # sequenceA :: Applicative f => JavaScript (f a) -> f (JavaScript a) # mapM :: Monad m => (a -> m b) -> JavaScript a -> m (JavaScript b) # sequence :: Monad m => JavaScript (m a) -> m (JavaScript a) # | |
| Eq a => Eq (JavaScript a) # | |
Defined in Language.ECMAScript3.Syntax | |
| Data a => Data (JavaScript a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> JavaScript a -> c (JavaScript a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (JavaScript a) # toConstr :: JavaScript a -> Constr # dataTypeOf :: JavaScript a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (JavaScript a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (JavaScript a)) # gmapT :: (forall b. Data b => b -> b) -> JavaScript a -> JavaScript a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JavaScript a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JavaScript a -> r # gmapQ :: (forall d. Data d => d -> u) -> JavaScript a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> JavaScript a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> JavaScript a -> m (JavaScript a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> JavaScript a -> m (JavaScript a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> JavaScript a -> m (JavaScript a) # | |
| Ord a => Ord (JavaScript a) # | |
Defined in Language.ECMAScript3.Syntax Methods compare :: JavaScript a -> JavaScript a -> Ordering # (<) :: JavaScript a -> JavaScript a -> Bool # (<=) :: JavaScript a -> JavaScript a -> Bool # (>) :: JavaScript a -> JavaScript a -> Bool # (>=) :: JavaScript a -> JavaScript a -> Bool # max :: JavaScript a -> JavaScript a -> JavaScript a # min :: JavaScript a -> JavaScript a -> JavaScript a # | |
| Show a => Show (JavaScript a) # | |
Defined in Language.ECMAScript3.Syntax Methods showsPrec :: Int -> JavaScript a -> ShowS # show :: JavaScript a -> String # showList :: [JavaScript a] -> ShowS # | |
| Default a => Default (JavaScript a) # | |
Defined in Language.ECMAScript3.Syntax Methods def :: JavaScript a # | |
| Pretty (JavaScript a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: JavaScript a -> Doc # | |
unJavaScript :: JavaScript a -> [Statement a] #
extracts statements from a JavaScript type
Statements, spec 12.
Constructors
| BlockStmt a [Statement a] |
|
| EmptyStmt a |
|
| ExprStmt a (Expression a) |
|
| IfStmt a (Expression a) (Statement a) (Statement a) |
|
| IfSingleStmt a (Expression a) (Statement a) |
|
| SwitchStmt a (Expression a) [CaseClause a] |
|
| WhileStmt a (Expression a) (Statement a) |
|
| DoWhileStmt a (Statement a) (Expression a) |
|
| BreakStmt a (Maybe (Id a)) |
|
| ContinueStmt a (Maybe (Id a)) |
|
| LabelledStmt a (Id a) (Statement a) |
|
| ForInStmt a (ForInInit a) (Expression a) (Statement a) |
|
| ForStmt a (ForInit a) (Maybe (Expression a)) (Maybe (Expression a)) (Statement a) |
|
| TryStmt a (Statement a) (Maybe (CatchClause a)) (Maybe (Statement a)) |
|
| ThrowStmt a (Expression a) |
|
| ReturnStmt a (Maybe (Expression a)) |
|
| WithStmt a (Expression a) (Statement a) |
|
| VarDeclStmt a [VarDecl a] |
|
| FunctionStmt a (Id a) [Id a] [Statement a] |
|
Instances
| Functor Statement # | |
| Foldable Statement # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => Statement m -> m # foldMap :: Monoid m => (a -> m) -> Statement a -> m # foldr :: (a -> b -> b) -> b -> Statement a -> b # foldr' :: (a -> b -> b) -> b -> Statement a -> b # foldl :: (b -> a -> b) -> b -> Statement a -> b # foldl' :: (b -> a -> b) -> b -> Statement a -> b # foldr1 :: (a -> a -> a) -> Statement a -> a # foldl1 :: (a -> a -> a) -> Statement a -> a # toList :: Statement a -> [a] # length :: Statement a -> Int # elem :: Eq a => a -> Statement a -> Bool # maximum :: Ord a => Statement a -> a # minimum :: Ord a => Statement a -> a # | |
| Traversable Statement # | |
Defined in Language.ECMAScript3.Syntax | |
| HasAnnotation Statement # | |
Defined in Language.ECMAScript3.Syntax.Annotations | |
| Eq a => Eq (Statement a) # | |
| Data a => Data (Statement a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Statement a -> c (Statement a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Statement a) # toConstr :: Statement a -> Constr # dataTypeOf :: Statement a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Statement a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Statement a)) # gmapT :: (forall b. Data b => b -> b) -> Statement a -> Statement a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Statement a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Statement a -> r # gmapQ :: (forall d. Data d => d -> u) -> Statement a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Statement a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Statement a -> m (Statement a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement a -> m (Statement a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement a -> m (Statement a) # | |
| Ord a => Ord (Statement a) # | |
Defined in Language.ECMAScript3.Syntax | |
| Show a => Show (Statement a) # | |
| Pretty [Statement a] # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: [Statement a] -> Doc # | |
| Pretty (Statement a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: Statement a -> Doc # | |
isIterationStmt :: Statement a -> Bool #
Returns True if the statement is an IterationStatement
according to spec 12.6.
data CaseClause a #
Case clauses, spec 12.11
Constructors
| CaseClause a (Expression a) [Statement a] | case e: stmts; |
| CaseDefault a [Statement a] | default: stmts; |
Instances
data CatchClause a #
Catch clause, spec 12.14
Constructors
| CatchClause a (Id a) (Statement a) | catch (x) {...} |
Instances
for initializer, spec 12.6
Constructors
| NoInit | empty |
| VarInit [VarDecl a] | var x, y=42 |
| ExprInit (Expression a) | expr |
Instances
| Functor ForInit # | |
| Foldable ForInit # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => ForInit m -> m # foldMap :: Monoid m => (a -> m) -> ForInit a -> m # foldr :: (a -> b -> b) -> b -> ForInit a -> b # foldr' :: (a -> b -> b) -> b -> ForInit a -> b # foldl :: (b -> a -> b) -> b -> ForInit a -> b # foldl' :: (b -> a -> b) -> b -> ForInit a -> b # foldr1 :: (a -> a -> a) -> ForInit a -> a # foldl1 :: (a -> a -> a) -> ForInit a -> a # elem :: Eq a => a -> ForInit a -> Bool # maximum :: Ord a => ForInit a -> a # minimum :: Ord a => ForInit a -> a # | |
| Traversable ForInit # | |
| Eq a => Eq (ForInit a) # | |
| Data a => Data (ForInit a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForInit a -> c (ForInit a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ForInit a) # toConstr :: ForInit a -> Constr # dataTypeOf :: ForInit a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ForInit a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ForInit a)) # gmapT :: (forall b. Data b => b -> b) -> ForInit a -> ForInit a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForInit a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForInit a -> r # gmapQ :: (forall d. Data d => d -> u) -> ForInit a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ForInit a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForInit a -> m (ForInit a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForInit a -> m (ForInit a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForInit a -> m (ForInit a) # | |
| Ord a => Ord (ForInit a) # | |
| Show a => Show (ForInit a) # | |
| Pretty (ForInit a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: ForInit a -> Doc # | |
for..in initializer, spec 12.6
Instances
| Functor ForInInit # | |
| Foldable ForInInit # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => ForInInit m -> m # foldMap :: Monoid m => (a -> m) -> ForInInit a -> m # foldr :: (a -> b -> b) -> b -> ForInInit a -> b # foldr' :: (a -> b -> b) -> b -> ForInInit a -> b # foldl :: (b -> a -> b) -> b -> ForInInit a -> b # foldl' :: (b -> a -> b) -> b -> ForInInit a -> b # foldr1 :: (a -> a -> a) -> ForInInit a -> a # foldl1 :: (a -> a -> a) -> ForInInit a -> a # toList :: ForInInit a -> [a] # length :: ForInInit a -> Int # elem :: Eq a => a -> ForInInit a -> Bool # maximum :: Ord a => ForInInit a -> a # minimum :: Ord a => ForInInit a -> a # | |
| Traversable ForInInit # | |
Defined in Language.ECMAScript3.Syntax | |
| Eq a => Eq (ForInInit a) # | |
| Data a => Data (ForInInit a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForInInit a -> c (ForInInit a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ForInInit a) # toConstr :: ForInInit a -> Constr # dataTypeOf :: ForInInit a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ForInInit a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ForInInit a)) # gmapT :: (forall b. Data b => b -> b) -> ForInInit a -> ForInInit a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForInInit a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForInInit a -> r # gmapQ :: (forall d. Data d => d -> u) -> ForInInit a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ForInInit a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForInInit a -> m (ForInInit a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForInInit a -> m (ForInInit a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForInInit a -> m (ForInInit a) # | |
| Ord a => Ord (ForInInit a) # | |
Defined in Language.ECMAScript3.Syntax | |
| Show a => Show (ForInInit a) # | |
| Pretty (ForInInit a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: ForInInit a -> Doc # | |
A variable declaration, spec 12.2
Constructors
| VarDecl a (Id a) (Maybe (Expression a)) | var x = e; |
Instances
| Functor VarDecl # | |
| Foldable VarDecl # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => VarDecl m -> m # foldMap :: Monoid m => (a -> m) -> VarDecl a -> m # foldr :: (a -> b -> b) -> b -> VarDecl a -> b # foldr' :: (a -> b -> b) -> b -> VarDecl a -> b # foldl :: (b -> a -> b) -> b -> VarDecl a -> b # foldl' :: (b -> a -> b) -> b -> VarDecl a -> b # foldr1 :: (a -> a -> a) -> VarDecl a -> a # foldl1 :: (a -> a -> a) -> VarDecl a -> a # elem :: Eq a => a -> VarDecl a -> Bool # maximum :: Ord a => VarDecl a -> a # minimum :: Ord a => VarDecl a -> a # | |
| Traversable VarDecl # | |
| HasAnnotation VarDecl # | |
Defined in Language.ECMAScript3.Syntax.Annotations | |
| Eq a => Eq (VarDecl a) # | |
| Data a => Data (VarDecl a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> VarDecl a -> c (VarDecl a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (VarDecl a) # toConstr :: VarDecl a -> Constr # dataTypeOf :: VarDecl a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (VarDecl a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (VarDecl a)) # gmapT :: (forall b. Data b => b -> b) -> VarDecl a -> VarDecl a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> VarDecl a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> VarDecl a -> r # gmapQ :: (forall d. Data d => d -> u) -> VarDecl a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> VarDecl a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> VarDecl a -> m (VarDecl a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> VarDecl a -> m (VarDecl a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> VarDecl a -> m (VarDecl a) # | |
| Ord a => Ord (VarDecl a) # | |
| Show a => Show (VarDecl a) # | |
| Pretty (VarDecl a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: VarDecl a -> Doc # | |
data Expression a #
Expressions, see spec 11
Constructors
| StringLit a String |
|
| RegexpLit a String Bool Bool |
|
| NumLit a Double |
|
| IntLit a Int |
|
| BoolLit a Bool |
|
| NullLit a |
|
| ArrayLit a [Expression a] |
|
| ObjectLit a [(Prop a, Expression a)] |
|
| ThisRef a |
|
| VarRef a (Id a) |
|
| DotRef a (Expression a) (Id a) |
|
| BracketRef a (Expression a) (Expression a) |
|
| NewExpr a (Expression a) [Expression a] |
|
| PrefixExpr a PrefixOp (Expression a) |
|
| UnaryAssignExpr a UnaryAssignOp (LValue a) |
|
| InfixExpr a InfixOp (Expression a) (Expression a) |
|
| CondExpr a (Expression a) (Expression a) (Expression a) |
|
| AssignExpr a AssignOp (LValue a) (Expression a) |
|
| ListExpr a [Expression a] |
|
| CallExpr a (Expression a) [Expression a] |
|
| FuncExpr a (Maybe (Id a)) [Id a] [Statement a] |
|
Instances
Infix operators: see spec 11.5-11.11
Constructors
| OpLT | < |
| OpLEq | <= |
| OpGT | > |
| OpGEq | >= |
| OpIn | in |
| OpInstanceof | instanceof |
| OpEq | == |
| OpNEq | != |
| OpStrictEq | === |
| OpStrictNEq | !=== |
| OpLAnd | && |
| OpLOr | || |
| OpMul | * |
| OpDiv | / |
| OpMod | % |
| OpSub | - |
| OpLShift | << |
| OpSpRShift | >> |
| OpZfRShift | >>> |
| OpBAnd | & |
| OpBXor | ^ |
| OpBOr | | |
| OpAdd | + |
Instances
| Enum InfixOp # | |
| Eq InfixOp # | |
| Data InfixOp # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InfixOp -> c InfixOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InfixOp # toConstr :: InfixOp -> Constr # dataTypeOf :: InfixOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InfixOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InfixOp) # gmapT :: (forall b. Data b => b -> b) -> InfixOp -> InfixOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InfixOp -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InfixOp -> r # gmapQ :: (forall d. Data d => d -> u) -> InfixOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> InfixOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> InfixOp -> m InfixOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InfixOp -> m InfixOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InfixOp -> m InfixOp # | |
| Ord InfixOp # | |
Defined in Language.ECMAScript3.Syntax | |
| Show InfixOp # | |
| Pretty InfixOp # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: InfixOp -> Doc # | |
Assignment operators: see spec 11.13
Constructors
| OpAssign | simple assignment, |
| OpAssignAdd | += |
| OpAssignSub | -= |
| OpAssignMul | *= |
| OpAssignDiv | /= |
| OpAssignMod | %= |
| OpAssignLShift | <<= |
| OpAssignSpRShift | >>= |
| OpAssignZfRShift | >>>= |
| OpAssignBAnd | &= |
| OpAssignBXor | ^= |
| OpAssignBOr | |= |
Instances
| Eq AssignOp # | |
| Data AssignOp # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AssignOp -> c AssignOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AssignOp # toConstr :: AssignOp -> Constr # dataTypeOf :: AssignOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AssignOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AssignOp) # gmapT :: (forall b. Data b => b -> b) -> AssignOp -> AssignOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AssignOp -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AssignOp -> r # gmapQ :: (forall d. Data d => d -> u) -> AssignOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> AssignOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> AssignOp -> m AssignOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AssignOp -> m AssignOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AssignOp -> m AssignOp # | |
| Ord AssignOp # | |
Defined in Language.ECMAScript3.Syntax | |
| Show AssignOp # | |
| Pretty AssignOp # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: AssignOp -> Doc # | |
Instances
| Functor Id # | |
| Foldable Id # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => Id m -> m # foldMap :: Monoid m => (a -> m) -> Id a -> m # foldr :: (a -> b -> b) -> b -> Id a -> b # foldr' :: (a -> b -> b) -> b -> Id a -> b # foldl :: (b -> a -> b) -> b -> Id a -> b # foldl' :: (b -> a -> b) -> b -> Id a -> b # foldr1 :: (a -> a -> a) -> Id a -> a # foldl1 :: (a -> a -> a) -> Id a -> a # elem :: Eq a => a -> Id a -> Bool # maximum :: Ord a => Id a -> a # | |
| Traversable Id # | |
| HasAnnotation Id # | |
Defined in Language.ECMAScript3.Syntax.Annotations | |
| Eq a => Eq (Id a) # | |
| Data a => Data (Id a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Id a -> c (Id a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Id a) # dataTypeOf :: Id a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Id a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Id a)) # gmapT :: (forall b. Data b => b -> b) -> Id a -> Id a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Id a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Id a -> r # gmapQ :: (forall d. Data d => d -> u) -> Id a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Id a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Id a -> m (Id a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Id a -> m (Id a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Id a -> m (Id a) # | |
| Ord a => Ord (Id a) # | |
| Show a => Show (Id a) # | |
| Default a => IsString (Id a) # | |
Defined in Language.ECMAScript3.Syntax.CodeGen Methods fromString :: String -> Id a # | |
| Pretty (Id a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: Id a -> Doc # | |
Prefix operators: see spec 11.4 (excluding 11.4.4, 11.4.5)
Constructors
| PrefixLNot | ! |
| PrefixBNot | ~ |
| PrefixPlus | + |
| PrefixMinus | - |
| PrefixTypeof | typeof |
| PrefixVoid | void |
| PrefixDelete | delete |
Instances
| Eq PrefixOp # | |
| Data PrefixOp # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PrefixOp -> c PrefixOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PrefixOp # toConstr :: PrefixOp -> Constr # dataTypeOf :: PrefixOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PrefixOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PrefixOp) # gmapT :: (forall b. Data b => b -> b) -> PrefixOp -> PrefixOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PrefixOp -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PrefixOp -> r # gmapQ :: (forall d. Data d => d -> u) -> PrefixOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> PrefixOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PrefixOp -> m PrefixOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PrefixOp -> m PrefixOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PrefixOp -> m PrefixOp # | |
| Ord PrefixOp # | |
Defined in Language.ECMAScript3.Syntax | |
| Show PrefixOp # | |
| Pretty PrefixOp # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: PrefixOp -> Doc # | |
Property names in an object initializer: see spec 11.1.5
Constructors
| PropId a (Id a) | property name is an identifier, |
| PropString a String | property name is a string, |
| PropNum a Integer | property name is an integer, |
Instances
| Functor Prop # | |
| Foldable Prop # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => Prop m -> m # foldMap :: Monoid m => (a -> m) -> Prop a -> m # foldr :: (a -> b -> b) -> b -> Prop a -> b # foldr' :: (a -> b -> b) -> b -> Prop a -> b # foldl :: (b -> a -> b) -> b -> Prop a -> b # foldl' :: (b -> a -> b) -> b -> Prop a -> b # foldr1 :: (a -> a -> a) -> Prop a -> a # foldl1 :: (a -> a -> a) -> Prop a -> a # elem :: Eq a => a -> Prop a -> Bool # maximum :: Ord a => Prop a -> a # | |
| Traversable Prop # | |
| HasAnnotation Prop # | |
Defined in Language.ECMAScript3.Syntax.Annotations | |
| Eq a => Eq (Prop a) # | |
| Data a => Data (Prop a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Prop a -> c (Prop a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Prop a) # toConstr :: Prop a -> Constr # dataTypeOf :: Prop a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Prop a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Prop a)) # gmapT :: (forall b. Data b => b -> b) -> Prop a -> Prop a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Prop a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Prop a -> r # gmapQ :: (forall d. Data d => d -> u) -> Prop a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Prop a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Prop a -> m (Prop a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Prop a -> m (Prop a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Prop a -> m (Prop a) # | |
| Ord a => Ord (Prop a) # | |
| Show a => Show (Prop a) # | |
| Default a => IsString (Prop a) # | |
Defined in Language.ECMAScript3.Syntax.CodeGen Methods fromString :: String -> Prop a # | |
| Pretty (Prop a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: Prop a -> Doc # | |
data UnaryAssignOp #
Unary assignment operators: see spec 11.3, 11.4.4, 11.4.5
Constructors
| PrefixInc | ++x |
| PrefixDec | --x |
| PostfixInc | x++ |
| PostfixDec | x-- |
Instances
Left-hand side expressions: see spec 11.2
Constructors
| LVar a String | variable reference, |
| LDot a (Expression a) String | foo.bar |
| LBracket a (Expression a) (Expression a) | foo[bar] |
Instances
| Functor LValue # | |
| Foldable LValue # | |
Defined in Language.ECMAScript3.Syntax Methods fold :: Monoid m => LValue m -> m # foldMap :: Monoid m => (a -> m) -> LValue a -> m # foldr :: (a -> b -> b) -> b -> LValue a -> b # foldr' :: (a -> b -> b) -> b -> LValue a -> b # foldl :: (b -> a -> b) -> b -> LValue a -> b # foldl' :: (b -> a -> b) -> b -> LValue a -> b # foldr1 :: (a -> a -> a) -> LValue a -> a # foldl1 :: (a -> a -> a) -> LValue a -> a # elem :: Eq a => a -> LValue a -> Bool # maximum :: Ord a => LValue a -> a # minimum :: Ord a => LValue a -> a # | |
| Traversable LValue # | |
| HasAnnotation LValue # | |
Defined in Language.ECMAScript3.Syntax.Annotations | |
| Eq a => Eq (LValue a) # | |
| Data a => Data (LValue a) # | |
Defined in Language.ECMAScript3.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LValue a -> c (LValue a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (LValue a) # toConstr :: LValue a -> Constr # dataTypeOf :: LValue a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (LValue a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (LValue a)) # gmapT :: (forall b. Data b => b -> b) -> LValue a -> LValue a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LValue a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LValue a -> r # gmapQ :: (forall d. Data d => d -> u) -> LValue a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LValue a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LValue a -> m (LValue a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LValue a -> m (LValue a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LValue a -> m (LValue a) # | |
| Ord a => Ord (LValue a) # | |
Defined in Language.ECMAScript3.Syntax | |
| Show a => Show (LValue a) # | |
| Default a => IsString (LValue a) # | |
Defined in Language.ECMAScript3.Syntax.CodeGen Methods fromString :: String -> LValue a # | |
| Pretty (LValue a) # | |
Defined in Language.ECMAScript3.PrettyPrint Methods prettyPrint :: LValue a -> Doc # | |
The abstract data type SourcePos represents source positions. It
contains the name of the source (i.e. file name), a line number and
a column number. SourcePos is an instance of the Show, Eq and
Ord class.
Instances
| Eq SourcePos | |
| Data SourcePos | |
Defined in Text.Parsec.Pos Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourcePos -> c SourcePos # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourcePos # toConstr :: SourcePos -> Constr # dataTypeOf :: SourcePos -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourcePos) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourcePos) # gmapT :: (forall b. Data b => b -> b) -> SourcePos -> SourcePos # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourcePos -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourcePos -> r # gmapQ :: (forall d. Data d => d -> u) -> SourcePos -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> SourcePos -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourcePos -> m SourcePos # | |
| Ord SourcePos | |
| Show SourcePos | |
| Default SourcePos # | |
Defined in Language.ECMAScript3.Syntax | |
isValid :: forall a. (Data a, Typeable a) => JavaScript a -> Bool #
The ECMAScript standard defines certain syntactic restrictions on
programs (or, more precisely, statements) that aren't easily
enforced in the AST datatype. These restrictions have to do with
labeled statements and break/continue statement, as well as
identifier names. Thus, it is possible to manually generate AST's
that correspond to syntactically incorrect programs. Use this
predicate to check if an JavaScript AST corresponds to a
syntactically correct ECMAScript program.
isValidIdentifier :: Id a -> Bool #
Checks if an identifier name is valid according to the spec
isValidIdentifierName :: String -> Bool #
Checks if the String represents a valid identifier name
isReservedWord :: String -> Bool #
Checks if a string is in the list of reserved ECMAScript words
isValidIdStart :: Char -> Bool #
Checks if a character is valid at the start of an identifier
isValidIdPart :: Char -> Bool #
Checks if a character is valid in an identifier part
data EnclosingStatement #
Constructors
| EnclosingIter [Label] | The enclosing statement is an iteration statement |
| EnclosingSwitch [Label] | The enclosing statement is a switch statement |
| EnclosingOther [Label] | The enclosing statement is some other
statement. Note, |
Instances
| Show EnclosingStatement # | |
Defined in Language.ECMAScript3.Syntax Methods showsPrec :: Int -> EnclosingStatement -> ShowS # show :: EnclosingStatement -> String # showList :: [EnclosingStatement] -> ShowS # | |
| HasLabelSet EnclosingStatement # | |
Defined in Language.ECMAScript3.Syntax Methods getLabelSet :: EnclosingStatement -> [Label] # setLabelSet :: [Label] -> EnclosingStatement -> EnclosingStatement # | |
pushLabel :: Monad m => Id b -> StateT ([Label], [EnclosingStatement]) m a -> StateT ([Label], [EnclosingStatement]) m a #
pushEnclosing :: Monad m => ([Label] -> EnclosingStatement) -> StateT ([Label], [EnclosingStatement]) m a -> StateT ([Label], [EnclosingStatement]) m a #
class HasLabelSet a where #
Instances
| HasLabelSet EnclosingStatement # | |
Defined in Language.ECMAScript3.Syntax Methods getLabelSet :: EnclosingStatement -> [Label] # setLabelSet :: [Label] -> EnclosingStatement -> EnclosingStatement # | |
isIter :: EnclosingStatement -> Bool #
isIterSwitch :: EnclosingStatement -> Bool #