F5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    t !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ A script in  script ...  /script& tags. This may seem a little silly, F but the Flapjax analogue has an inline variant and attribute-inline  variant. t !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~t<RQPONMLKJIHGFEDCBA@?>=9;:-,+*)('&%$#"! q~}|{zyxwvutsr7856dponmlkjihgfeZcba`_^]\[WYXSVUT1432.0/t-,+*)('&%$#"!  !"#$%&'()*+,-.0//014322345667889;::;<RQPONMLKJIHGFEDCBA@?>==>?@ABCDEFGHIJKLMNOPQRSVUTTUVWYXXYZ cba`_^]\[[\]^_`abcd ponmlkjihgfeefghijklmnopq~}|{zyxwvutsrrstuvwxyz{|}~-  FThe statically-determinate lexical structure of a JavaScript program.     enclosing environment !local environment and references #environment and global definitions browser/testing environment A type t of the  class can be parsed using Parsec. t is of  kind '* -> *'=, as the parsed AST should be annotated with souce locations  (see  ). MThe big deal here is that we can embed a parser for some scripting language, L (e.g. Javascript) into this HTML parser with ease, while preserving source I locations. The Html datatype is parameterized over a script parser (an  instance of Script). must be a non-empty list 3Returns the value of the attribute in the list, or  if it doesn't - exist of the value is an inline-expression. <IAn HTML fragment represents an HTML element with a sequence of children.  !"#$%&&List of HTML elements that are empty. '()*+GWe do not permit spaces between the hyphens and the right-angle in the  terminating -->. ,-./0123456789:;<=>?@ABCDE F G  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ H"Returns the source of the script. IMReturns a list of URIs for external Javascript files referenced in the page. J.Returns the top-level statements of a script. KLMNOLGiven an HTML page, crawls all external Javascript files and returns a list - of statements, concatenated from all files. P !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHHIJIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~             !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F  G H I J K L M NO WebBits-0.15BrownPLT.Html.RawScriptBrownPLT.JavaScript.LexerBrownPLT.JavaScript.SyntaxBrownPLT.JavaScript.ParserBrownPLT.JavaScript.PrettyPrintBrownPLT.JavaScript.EnvironmentBrownPLT.Html.SyntaxBrownPLT.Html.PermissiveParserBrownPLT.Html.PrettyPrint!BrownPLT.JavaScript.HtmlEmbeddingBrownPLT.JavaScript.CrawlBrownPLT.JavaScript.InstancesBrownPLT.Html.InstancesBrownPLT.JavaScript BrownPLT.Htmlparsec-2.1.0.1"Text.ParserCombinators.Parsec.Prim parseFromFileidentifierStart identifierreservedoperator reservedOp charLiteral stringLiteralnaturalintegerfloatnaturalOrFloatdecimal hexadecimaloctalsymbol whiteSpaceparensbracessquaressemicommacolondotbracketslexeme Statement FunctionStmt VarDeclStmtWithStmt ReturnStmt ThrowStmtTryStmtForStmt ForInStmt LabelledStmt ContinueStmt BreakStmt DoWhileStmt WhileStmt SwitchStmt IfSingleStmtIfStmtExprStmt EmptyStmt BlockStmt ForInInit ForInNoVarForInVarForInitExprInitVarInitNoInitVarDecl CatchClause CaseClause CaseDefault ExpressionFuncExprCallExprListExpr ParenExpr AssignExprCondExpr InfixExpr PrefixExpr PostfixExprNewExpr BracketRefDotRefVarRefThisRef ObjectLitArrayLitNullLitBoolLitIntLitNumLit RegexpLit StringLitPropPropNum PropStringPropId PostfixOp PostfixDec PostfixIncPrefixOp PrefixDelete PrefixVoid PrefixTypeof PrefixMinus PrefixPlus PrefixBNot PrefixLNot PrefixDec PrefixIncAssignOp OpAssignBOr OpAssignBXor OpAssignBAndOpAssignZfRShiftOpAssignSpRShiftOpAssignLShift OpAssignMod OpAssignDiv OpAssignMul OpAssignSub OpAssignAddOpAssignInfixOpOpAddOpBOrOpBXorOpBAnd OpZfRShift OpSpRShiftOpLShiftOpSubOpModOpDivOpMulOpLOrOpLAnd OpStrictNEq OpStrictEqOpNEqOpEq OpInstanceofOpInOpGEqOpGTOpLEqOpLTId JavaScriptScriptunIdExpressionParserStatementParserParsedExpressionParsedStatementparseBlockStmtparseStatementparseSimpleExpr'parseAssignExprparseExpression parseScriptparseJavaScriptFromFileparseScriptFromStringemptyParsedJavaScript parseStringrenderStatementsrenderExpressionstmtexpr javaScriptEnvTreeenv localVarsprettyPrintScriptparseScriptBlockparseInlineScriptparseAttributeScriptHtml InlineScriptProcessingInstructionHtmlSeqCommentTextElement Attribute AttributeExprAttributeValueHtmlIdisAttributeExprattributeValue attributeSetattributeUpdateTokentokenshtmlparseHtmlFromStringparseHtmlFromFile renderHtml RawScriptRawHtmlparseFromString ParsedJsHtmlParsedJavaScriptJsHtmlgetPageJavaScript parseIfStmtparseSwitchStmtparseWhileStmtparseDoWhileStmtparseContinueStmtparseBreakStmtparseEmptyStmtparseLabelledStmtparseExpressionStmtparseForInStmt parseForStmt parseTryStmtparseThrowStmtparseReturnStmt parseWithStmtparseVarDeclStmtparseFunctionStmt parseThisRef parseNullLit parseBoolLit parseVarRef parseArrayLit allEscapesparseStringLitparseRegexpLitparseObjectLit mkDecimal parseNumLitparseParenExpr exprTableparseTernaryExpr'parseTernaryExpr assignTableinBlockinParenssemiSepforInit forInInit caseClause catchClausevarDeclpropjsEscapemexpryfoldrlfoldr ltraverse ytraversePartial partialLocalspartialReferences partialNestedemptyrefdeclnestunions javascript makeEnvTree!Text.ParserCombinators.Parsec.Pos SourcePosbase Data.MaybeNothing HtmlFragmentFragmentfragmentPosition fragmentNamefragmentAttributesfragmentChildren TokenParser DoctypeTokenEndTagInlineTag EntityInt EntityTokenWarning StringWarningParsedAttribute ParsedHtmlwarn noWarningsparentConstraints emptyElementsisLegalChildOfisEmptyElementtokenqnamecommentendTagdoctypeentity notScripttext quotedString scriptValuenumbernonquotedAttribute attributetag inlineScript textToken entityToken commentToken scriptToken inlineTokenendTokentagToken doctypeToken closeFragmentatomic maybeCloseopenhtml'htmlWithWarningsattr scriptSrcimportedScripts scriptText eventHandlers attrScriptinpageAttrScripts inpageScriptsgetPageJavascript