-- 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]