-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Parser for JavaScript
--
-- Parses Javascript into an Abstract Syntax Tree (AST). Initially
-- intended as frontend to hjsmin.
@package language-javascript
@version 0.4.8
module Language.JavaScript.Parser.Lexer
-- | Lexical tokens.
data Token
-- | Single line comment.
CommentToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
-- | Identifier.
IdentifierToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
-- | Literal: Decimal
DecimalToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
-- | Literal: Hexadecimal Integer
HexIntegerToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
-- | Literal: string, delimited by either single or double quotes
StringToken :: !AlexSpan -> !String -> !Char -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
token_delimiter :: Token -> !Char
-- | Literal: Regular Expression
RegExToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
BreakToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
CaseToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
CatchToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ConstToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ContinueToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
DebuggerToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
DefaultToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
DeleteToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
DoToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ElseToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
EnumToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
FalseToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
FinallyToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ForToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
FunctionToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
IfToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
InToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
InstanceofToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
NewToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
NullToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ReturnToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
SwitchToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ThisToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
ThrowToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
TrueToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
TryToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
TypeofToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
VarToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
VoidToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
WhileToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
WithToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
FutureToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
GetToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
SetToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
SemiColonToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
CommaToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
HookToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ColonToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
OrToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
AndToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
BitwiseOrToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
BitwiseXorToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
BitwiseAndToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
StrictEqToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
EqToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
AssignToken :: !AlexSpan -> !String -> Token
token_span :: Token -> !AlexSpan
token_literal :: Token -> !String
SimpleAssignToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
StrictNeToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
NeToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LshToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LeToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LtToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
UrshToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
RshToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
GeToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
GtToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
IncrementToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DecrementToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
PlusToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
MinusToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
MulToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DivToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ModToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
NotToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
BitwiseNotToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DotToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LeftBracketToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
RightBracketToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LeftCurlyToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
RightCurlyToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
LeftParenToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
RightParenToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
CondcommentEndToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
-- | End of file
EOFToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
lexCont :: (Token -> P a) -> P a
instance Functor AlexLastAcc
module Language.JavaScript.Parser.AST
data Node
JSArguments :: [[JSNode]] -> Node
JSArrayLiteral :: [JSNode] -> Node
JSBlock :: JSNode -> Node
JSBreak :: [JSNode] -> [JSNode] -> Node
JSCallExpression :: String -> [JSNode] -> Node
JSCase :: JSNode -> JSNode -> Node
JSCatch :: JSNode -> [JSNode] -> JSNode -> Node
JSContinue :: [JSNode] -> Node
JSDecimal :: String -> Node
JSDefault :: JSNode -> Node
JSDoWhile :: JSNode -> JSNode -> JSNode -> Node
JSElision :: [JSNode] -> Node
JSEmpty :: JSNode -> Node
JSExpression :: [JSNode] -> Node
JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> Node
JSExpressionParen :: JSNode -> Node
JSExpressionPostfix :: String -> [JSNode] -> Node
JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> Node
JSFinally :: JSNode -> Node
JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
JSForIn :: [JSNode] -> JSNode -> JSNode -> Node
JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
JSForVarIn :: JSNode -> JSNode -> JSNode -> Node
JSFunction :: JSNode -> [JSNode] -> JSNode -> Node
JSFunctionBody :: [JSNode] -> Node
JSFunctionExpression :: [JSNode] -> [JSNode] -> JSNode -> Node
JSHexInteger :: String -> Node
JSIdentifier :: String -> Node
JSIf :: JSNode -> JSNode -> Node
JSIfElse :: JSNode -> JSNode -> JSNode -> Node
JSLabelled :: JSNode -> JSNode -> Node
JSLiteral :: String -> Node
JSMemberDot :: [JSNode] -> JSNode -> Node
JSMemberSquare :: [JSNode] -> JSNode -> Node
JSObjectLiteral :: [JSNode] -> Node
JSOperator :: String -> Node
JSPropertyNameandValue :: JSNode -> [JSNode] -> Node
JSPropertyAccessor :: String -> JSNode -> [JSNode] -> JSNode -> Node
JSRegEx :: String -> Node
JSReturn :: [JSNode] -> Node
JSSourceElements :: [JSNode] -> Node
JSSourceElementsTop :: [JSNode] -> Node
JSStatementBlock :: JSNode -> Node
JSStatementList :: [JSNode] -> Node
JSStringLiteral :: Char -> [Char] -> Node
JSSwitch :: JSNode -> [JSNode] -> Node
JSThrow :: JSNode -> Node
JSTry :: JSNode -> [JSNode] -> Node
JSUnary :: String -> Node
JSVarDecl :: JSNode -> [JSNode] -> Node
JSVariables :: String -> [JSNode] -> Node
JSWhile :: JSNode -> JSNode -> Node
JSWith :: JSNode -> [JSNode] -> Node
data JSNode
NS :: Node -> SrcSpan -> JSNode
-- | Source location spanning a contiguous section of a file.
data SrcSpan
-- | A span which starts and ends on the same line.
SpanCoLinear :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_row :: SrcSpan -> {-# UNPACK #-} !Int
span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | A span which starts and ends on different lines.
SpanMultiLine :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_start_row :: SrcSpan -> {-# UNPACK #-} !Int
span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
span_end_row :: SrcSpan -> {-# UNPACK #-} !Int
span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | A span which is actually just one point in the file.
SpanPoint :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_row :: SrcSpan -> {-# UNPACK #-} !Int
span_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | No span information.
SpanEmpty :: SrcSpan
showStripped :: JSNode -> String
instance Typeable Node
instance Typeable JSNode
instance Show Node
instance Eq Node
instance Read Node
instance Data Node
instance Show JSNode
instance Eq JSNode
instance Read JSNode
instance Data JSNode
module Language.JavaScript.Parser.Grammar5
parseProgram :: P JSNode
parseLiteral :: P JSNode
parsePrimaryExpression :: P JSNode
parseStatement :: P JSNode
module Language.JavaScript.Parser.Parser
-- | Parse one compound statement, or a sequence of simple statements.
-- Generally used for interactive input, such as from the command line of
-- an interpreter. Return comments in addition to the parsed statements.
parse :: String -> String -> Either ParseError JSNode
readJs :: String -> JSNode
parseFile :: FilePath -> IO JSNode
-- | Parse one compound statement, or a sequence of simple statements.
-- Generally used for interactive input, such as from the command line of
-- an interpreter. Return comments in addition to the parsed statements.
parseUsing :: P JSNode -> String -> String -> Either ParseError JSNode
showStripped :: JSNode -> String
showStrippedMaybe :: Show a => Either a JSNode -> [Char]
module Language.JavaScript.Parser
-- | Parse one compound statement, or a sequence of simple statements.
-- Generally used for interactive input, such as from the command line of
-- an interpreter. Return comments in addition to the parsed statements.
parse :: String -> String -> Either ParseError JSNode
readJs :: String -> JSNode
parseFile :: FilePath -> IO JSNode
showStripped :: JSNode -> String
showStrippedMaybe :: Show a => Either a JSNode -> [Char]
data JSNode
NS :: Node -> SrcSpan -> JSNode
-- | Source location spanning a contiguous section of a file.
data SrcSpan
-- | A span which starts and ends on the same line.
SpanCoLinear :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_row :: SrcSpan -> {-# UNPACK #-} !Int
span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | A span which starts and ends on different lines.
SpanMultiLine :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_start_row :: SrcSpan -> {-# UNPACK #-} !Int
span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
span_end_row :: SrcSpan -> {-# UNPACK #-} !Int
span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | A span which is actually just one point in the file.
SpanPoint :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
span_filename :: SrcSpan -> !String
span_row :: SrcSpan -> {-# UNPACK #-} !Int
span_column :: SrcSpan -> {-# UNPACK #-} !Int
-- | No span information.
SpanEmpty :: SrcSpan
data Node
JSArguments :: [[JSNode]] -> Node
JSArrayLiteral :: [JSNode] -> Node
JSBlock :: JSNode -> Node
JSBreak :: [JSNode] -> [JSNode] -> Node
JSCallExpression :: String -> [JSNode] -> Node
JSCase :: JSNode -> JSNode -> Node
JSCatch :: JSNode -> [JSNode] -> JSNode -> Node
JSContinue :: [JSNode] -> Node
JSDecimal :: String -> Node
JSDefault :: JSNode -> Node
JSDoWhile :: JSNode -> JSNode -> JSNode -> Node
JSElision :: [JSNode] -> Node
JSEmpty :: JSNode -> Node
JSExpression :: [JSNode] -> Node
JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> Node
JSExpressionParen :: JSNode -> Node
JSExpressionPostfix :: String -> [JSNode] -> Node
JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> Node
JSFinally :: JSNode -> Node
JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
JSForIn :: [JSNode] -> JSNode -> JSNode -> Node
JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
JSForVarIn :: JSNode -> JSNode -> JSNode -> Node
JSFunction :: JSNode -> [JSNode] -> JSNode -> Node
JSFunctionBody :: [JSNode] -> Node
JSFunctionExpression :: [JSNode] -> [JSNode] -> JSNode -> Node
JSHexInteger :: String -> Node
JSIdentifier :: String -> Node
JSIf :: JSNode -> JSNode -> Node
JSIfElse :: JSNode -> JSNode -> JSNode -> Node
JSLabelled :: JSNode -> JSNode -> Node
JSLiteral :: String -> Node
JSMemberDot :: [JSNode] -> JSNode -> Node
JSMemberSquare :: [JSNode] -> JSNode -> Node
JSObjectLiteral :: [JSNode] -> Node
JSOperator :: String -> Node
JSPropertyNameandValue :: JSNode -> [JSNode] -> Node
JSPropertyAccessor :: String -> JSNode -> [JSNode] -> JSNode -> Node
JSRegEx :: String -> Node
JSReturn :: [JSNode] -> Node
JSSourceElements :: [JSNode] -> Node
JSSourceElementsTop :: [JSNode] -> Node
JSStatementBlock :: JSNode -> Node
JSStatementList :: [JSNode] -> Node
JSStringLiteral :: Char -> [Char] -> Node
JSSwitch :: JSNode -> [JSNode] -> Node
JSThrow :: JSNode -> Node
JSTry :: JSNode -> [JSNode] -> Node
JSUnary :: String -> Node
JSVarDecl :: JSNode -> [JSNode] -> Node
JSVariables :: String -> [JSNode] -> Node
JSWhile :: JSNode -> JSNode -> Node
JSWith :: JSNode -> [JSNode] -> Node
data ParseError
-- | An error from the parser. Token found where it should not be. Note:
-- tokens contain their own source span.
UnexpectedToken :: Token -> ParseError
-- | An error from the lexer. Character found where it should not be.
UnexpectedChar :: Char -> AlexPosn -> ParseError
-- | A generic error containing a string message. No source location.
StrError :: String -> ParseError
-- | Posn records the location of a token in the input text. It
-- has three fields: the address (number of characters preceding the
-- token), line number and column of a token within the file.
-- start_pos gives the position of the start of the file and
-- eof_pos a standard encoding for the end of file.
-- move_pos calculates the new position after traversing a given
-- character, assuming the usual eight character tab stops.
data AlexPosn
AlexPn :: !Int -> !Int -> !Int -> AlexPosn
type P a = StateT ParseState (Either ParseError) a
data ParseState
ParseState :: !AlexPosn -> String -> !Char -> [Byte] -> !Int -> !Token -> [Token] -> ParseState
alex_pos :: ParseState -> !AlexPosn
alex_inp :: ParseState -> String
alex_chr :: ParseState -> !Char
alex_bytes :: ParseState -> [Byte]
alex_scd :: ParseState -> !Int
previousToken :: ParseState -> !Token
comments :: ParseState -> [Token]