<'/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   r !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~r:;<=>?@ABCDEFGHIJKLMNO789 !"#$%&'()*+nopqrstuvwxyz{|}~5634abcdefghijklmWXYZ[\]^_`TUVPQRS/012,-.  9 makes writing pretty-printing code for large, recursive  data structures shorter. 3Returns the value of the attribute in the list, or  if it doesn't . exist of the value is an inline-expression. 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 ). NThe big deal here is that we can embed a parser for some scripting language, M (e.g. Javascript) into this HTML parser with ease, while preserving source J locations. The Html datatype is parameterized over a script parser (an  instance of Script). &List of HTML elements that are empty. GWe do not permit spaces between the hyphens and the right-angle in the  terminating -->. IAn HTML fragment represents an HTML element with a sequence of children.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "Returns the source of the script. MReturns a list of URIs for external Javascript files referenced in the page. .Returns the top-level statements of a script. LGiven an HTML page, crawls all external Javascript files and returns a list - of statements, concatenated from all files.    Similar to  ., but the transformation is done in the monad m. The 7 sequence of operations is depth-first, left-to-right. "Traverses to the top of the tree.   up.top = undefined  top.top = top @Creates a new node as the right-most child of the current node. :Silently fails to shift right if there is no right-child. 8Silently fails to shift left if there is no left-child. )% EAnnotates each expression with its static environment. In addition, I a map of free identifiers is returned, along with the next valid label.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKKLMLNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~           WebBits-0.9.2WebBits.JavaScript.LexerWebBits.JavaScript.SyntaxWebBits.JavaScript.ParserWebBits.CommonWebBits.JavaScript.CombinatorsWebBits.Html.SyntaxWebBits.Html.PermissiveParser WebBits.JavaScript.HtmlEmbeddingWebBits.JavaScript.CrawlWebBits.Html.RawScriptWebBits.Data.ZipperWebBits.JavaScript.EnvironmentWebBits.JavaScript.InstancesWebBits.JavaScript.PrettyPrintbase Data.Maybeparsec-2.1.0.1!Text.ParserCombinators.Parsec.PosWebBits.Html.PrettyPrintWebBits.Html.InstancesWebBits.JavaScript.JavaScriptWebBits.Html.HtmlidentifierStart identifierreservedoperator reservedOp charLiteral stringLiteralnaturalintegerfloatnaturalOrFloatdecimal hexadecimaloctalsymbol whiteSpaceparensbracessquaressemicommacolondotbrackets 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 ObjectLitArrayLitNullLitBoolLitNumLit 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 JavaScriptScriptparseStatementparseSimpleExpr'parseExpression parseScriptparseJavaScriptFromFileparseScriptFromStringemptyParsedJavaScriptParsedExpressionParsedStatementPrettyPrintableppscriptStatements isParenExprsyntaxAt expressionsAt statementsAtisAttributeExprattributeValue attributeSetattributeUpdateparseScriptBlockparseInlineScriptparseAttributeScriptHtml InlineScriptProcessingInstructionHtmlSeqCommentTextElement Attribute AttributeExprAttributeValueHtmlIdtokenshtmlparseHtmlFromStringparseHtmlFromFileToken ParsedJsHtmlParsedJavaScriptJsHtmlgetPageJavaScriptparseFromString RawScriptRawHtmldfsFolddfsFoldMshowTreeemptyupdownleftrightreplacechange insertDown insertLeft insertRightisTopisChild canGoRight canGoDown canGoLeftcanGoUpgetValuesubTreetop toLocation fromLocation runZipperT evalZipperT execZipperTnestgetNodesetNodewithCurrentChild shiftRight shiftLeft shiftRight' shiftLeft'ZipperTLocationstaticEnvironmentLabelledExpressionLabelledStatementAnnEnv Data.List isPrefixOf SourcePos sourceNameNothing emptyElementscomment HtmlFragment scriptSrcimportedScripts scriptTextgetPageJavascript"Text.ParserCombinators.Parsec.Prim parseFromFilecontainers-0.1.0.2 Data.Tree subForest rootLabelNodeTree