-- 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.1.0
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 -> Token
token_span :: Token -> !AlexSpan
CaseToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
CatchToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ConstToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ContinueToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DebuggerToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DefaultToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DeleteToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
DoToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ElseToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
EnumToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
FalseToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
FinallyToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ForToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
FunctionToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
IfToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
InToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
InstanceofToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
NewToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
NullToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ReturnToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
SwitchToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ThisToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
ThrowToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
TrueToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
TryToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
TypeofToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
VarToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
VoidToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
WhileToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
WithToken :: !AlexSpan -> Token
token_span :: Token -> !AlexSpan
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 JSNode
JSArguments :: [[JSNode]] -> JSNode
JSArrayLiteral :: [JSNode] -> JSNode
JSBlock :: JSNode -> JSNode
JSBreak :: [JSNode] -> [JSNode] -> JSNode
JSCallExpression :: String -> [JSNode] -> JSNode
JSCase :: JSNode -> JSNode -> JSNode
JSCatch :: JSNode -> [JSNode] -> JSNode -> JSNode
JSContinue :: [JSNode] -> JSNode
JSDecimal :: String -> JSNode
JSDefault :: JSNode -> JSNode
JSDoWhile :: JSNode -> JSNode -> JSNode -> JSNode
-- | JSElement String [JSNode] | JSElementList [JSNode]
JSElision :: [JSNode] -> JSNode
JSEmpty :: JSNode -> JSNode
JSExpression :: [JSNode] -> JSNode
JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> JSNode
JSExpressionParen :: JSNode -> JSNode
JSExpressionPostfix :: String -> [JSNode] -> JSNode
JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode
JSFinally :: JSNode -> JSNode
JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> JSNode
JSForIn :: [JSNode] -> JSNode -> JSNode -> JSNode
JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> JSNode
JSForVarIn :: JSNode -> JSNode -> JSNode -> JSNode
JSFunction :: JSNode -> [JSNode] -> JSNode -> JSNode
JSFunctionBody :: [JSNode] -> JSNode
JSFunctionExpression :: [JSNode] -> JSNode -> JSNode
JSHexInteger :: String -> JSNode
JSIdentifier :: String -> JSNode
JSIf :: JSNode -> JSNode -> JSNode
JSIfElse :: JSNode -> JSNode -> JSNode -> JSNode
JSLabelled :: JSNode -> JSNode -> JSNode
JSLiteral :: String -> JSNode
JSMemberDot :: [JSNode] -> JSNode -> JSNode
JSMemberSquare :: [JSNode] -> JSNode -> JSNode
JSObjectLiteral :: [JSNode] -> JSNode
JSOperator :: String -> JSNode
JSPropertyNameandValue :: JSNode -> [JSNode] -> JSNode
JSRegEx :: String -> JSNode
JSReturn :: [JSNode] -> JSNode
JSSourceElements :: [JSNode] -> JSNode
JSSourceElementsTop :: [JSNode] -> JSNode
JSStatementList :: [JSNode] -> JSNode
JSStringLiteral :: Char -> [Char] -> JSNode
JSSwitch :: JSNode -> [JSNode] -> JSNode
JSThrow :: JSNode -> JSNode
JSTry :: JSNode -> [JSNode] -> JSNode
JSUnary :: String -> JSNode
JSVarDecl :: JSNode -> [JSNode] -> JSNode
JSVariables :: String -> [JSNode] -> JSNode
JSWhile :: JSNode -> JSNode -> JSNode
JSWith :: JSNode -> [JSNode] -> JSNode
instance Typeable JSNode
instance Show JSNode
instance Eq JSNode
instance Read JSNode
instance Data JSNode
module Language.JavaScript.Parser.Grammar
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
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
data JSNode
JSArguments :: [[JSNode]] -> JSNode
JSArrayLiteral :: [JSNode] -> JSNode
JSBlock :: JSNode -> JSNode
JSBreak :: [JSNode] -> [JSNode] -> JSNode
JSCallExpression :: String -> [JSNode] -> JSNode
JSCase :: JSNode -> JSNode -> JSNode
JSCatch :: JSNode -> [JSNode] -> JSNode -> JSNode
JSContinue :: [JSNode] -> JSNode
JSDecimal :: String -> JSNode
JSDefault :: JSNode -> JSNode
JSDoWhile :: JSNode -> JSNode -> JSNode -> JSNode
-- | JSElement String [JSNode] | JSElementList [JSNode]
JSElision :: [JSNode] -> JSNode
JSEmpty :: JSNode -> JSNode
JSExpression :: [JSNode] -> JSNode
JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> JSNode
JSExpressionParen :: JSNode -> JSNode
JSExpressionPostfix :: String -> [JSNode] -> JSNode
JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode
JSFinally :: JSNode -> JSNode
JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> JSNode
JSForIn :: [JSNode] -> JSNode -> JSNode -> JSNode
JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> JSNode
JSForVarIn :: JSNode -> JSNode -> JSNode -> JSNode
JSFunction :: JSNode -> [JSNode] -> JSNode -> JSNode
JSFunctionBody :: [JSNode] -> JSNode
JSFunctionExpression :: [JSNode] -> JSNode -> JSNode
JSHexInteger :: String -> JSNode
JSIdentifier :: String -> JSNode
JSIf :: JSNode -> JSNode -> JSNode
JSIfElse :: JSNode -> JSNode -> JSNode -> JSNode
JSLabelled :: JSNode -> JSNode -> JSNode
JSLiteral :: String -> JSNode
JSMemberDot :: [JSNode] -> JSNode -> JSNode
JSMemberSquare :: [JSNode] -> JSNode -> JSNode
JSObjectLiteral :: [JSNode] -> JSNode
JSOperator :: String -> JSNode
JSPropertyNameandValue :: JSNode -> [JSNode] -> JSNode
JSRegEx :: String -> JSNode
JSReturn :: [JSNode] -> JSNode
JSSourceElements :: [JSNode] -> JSNode
JSSourceElementsTop :: [JSNode] -> JSNode
JSStatementList :: [JSNode] -> JSNode
JSStringLiteral :: Char -> [Char] -> JSNode
JSSwitch :: JSNode -> [JSNode] -> JSNode
JSThrow :: JSNode -> JSNode
JSTry :: JSNode -> [JSNode] -> JSNode
JSUnary :: String -> JSNode
JSVarDecl :: JSNode -> [JSNode] -> JSNode
JSVariables :: String -> [JSNode] -> JSNode
JSWhile :: JSNode -> JSNode -> JSNode
JSWith :: JSNode -> [JSNode] -> JSNode
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
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]