!'ۿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                     Safe2456>Xe Safe2456>Xalanguage-ecmascript1The parser type, parametrised by the stream type s and the return value aSafe2456>XFlanguage-ecmascriptGreturns (s, True) if the number is an integer, an (s, False) otherwise   None2456>Xy~language-ecmascript1The enclosing statement is an iteration statementlanguage-ecmascript-The enclosing statement is a switch statement language-ecmascript9The enclosing statement is some other statement. Note,  ! is never pushed if the current labelSetQ is empty, so the list of labels in this constructor should always be non-empty!language-ecmascriptStatements, spec 12."language-ecmascript{stmts} , spec 12.1#language-ecmascript; , spec 12.3$language-ecmascriptexpr; , spec 12.4%language-ecmascript if (e) stmt , spec 12.5&language-ecmascriptif (e) stmt1 else stmt2 , spec 12.5'language-ecmascriptswitch (e) clauses , spec 12.11(language-ecmascriptwhile (e) do stmt , spec 12.6)language-ecmascriptdo stmt while (e); , spec 12.6*language-ecmascript break lab; , spec 12.8+language-ecmascript continue lab; , spec 12.7,language-ecmascript lab: stmt , spec 12.12-language-ecmascriptfor (x in o) stmt , spec 12.6.language-ecmascript"ForStmt a init test increment body, !for (init; test, increment) body , spec 12.6/language-ecmascript#try stmt catch(x) stmt finally stmt , spec 12.140language-ecmascript throw expr; , spec 12.131language-ecmascript return expr; , spec 12.92language-ecmascript with (o) stmt , spec 12.103language-ecmascript var x, y=42; , spec 12.24language-ecmascriptfunction f(x, y, z) {...} , spec 135language-ecmascriptfor..in initializer, spec 12.66language-ecmascript var x7language-ecmascriptfoo.baz, foo[bar], z8language-ecmascriptfor initializer, spec 12.69language-ecmascriptempty:language-ecmascript  var x, y=42;language-ecmascript expr<language-ecmascript!A variable declaration, spec 12.2=language-ecmascript  var x = e;>language-ecmascriptCatch clause, spec 12.14?language-ecmascript catch (x) {...}@language-ecmascriptCase clauses, spec 12.11Alanguage-ecmascript case e: stmts;Blanguage-ecmascript default: stmts;Clanguage-ecmascriptExpressions, see spec 11Dlanguage-ecmascript"foo", spec 11.1.3, 7.8Elanguage-ecmascript-RegexpLit a regexp global? case_insensitive?- -- regular expression, see spec 11.1.3, 7.8Flanguage-ecmascript41.99999, spec 11.1.3, 7.8Glanguage-ecmascript42, spec 11.1.3, 7.8Hlanguage-ecmascripttrue, spec 11.1.3, 7.8Ilanguage-ecmascriptnull, spec 11.1.3, 7.8Jlanguage-ecmascript[1,2,3] , spec 11.1.4Klanguage-ecmascript{foo:"bar", baz: 42} , spec 11.1.5Llanguage-ecmascriptthis , spec 11.1.1Mlanguage-ecmascriptfoo , spec 11.1.2Nlanguage-ecmascriptfoo.bar , spec 11.2.1Olanguage-ecmascriptfoo[bar , spec 11.2.1Planguage-ecmascript new foo(bar) , spec 11.2.2Qlanguage-ecmascript@e', spec 11.4 (excluding 11.4.4, 111.4.5)Rlanguage-ecmascript++x, x-- etc., spec 11.3, 11.4.4, 11.4.5Slanguage-ecmascripte1@e21, spec 11.5, 11.6, 11.7, 11.8, 11.9, 11.10, 11.11Tlanguage-ecmascript e1 ? e2 : e3 , spec 11.12Ulanguage-ecmascripte1 @=e2 , spec 11.13Vlanguage-ecmascripte1, e2 , spec 11.14Wlanguage-ecmascriptf(x,y,z),, spec 11.2.3 funcexprs are optionally namedXlanguage-ecmascriptfunction f (x,y,z) {...}, spec 11.2.5, 13Ylanguage-ecmascript)Left-hand side expressions: see spec 11.2Zlanguage-ecmascriptvariable reference, foo[language-ecmascript foo.bar\language-ecmascript foo[bar]]language-ecmascript8Property names in an object initializer: see spec 11.1.5^language-ecmascript property name is an identifier, foo_language-ecmascriptproperty name is a string, "foo"`language-ecmascriptproperty name is an integer, 42alanguage-ecmascript:Prefix operators: see spec 11.4 (excluding 11.4.4, 11.4.5)blanguage-ecmascript !clanguage-ecmascript ~dlanguage-ecmascript +elanguage-ecmascript -flanguage-ecmascript typeofglanguage-ecmascript voidhlanguage-ecmascript deleteilanguage-ecmascript9Unary assignment operators: see spec 11.3, 11.4.4, 11.4.5jlanguage-ecmascript ++xklanguage-ecmascript --xllanguage-ecmascript x++mlanguage-ecmascript x--nlanguage-ecmascript$Assignment operators: see spec 11.13olanguage-ecmascriptsimple assignment, =planguage-ecmascript +=qlanguage-ecmascript -=rlanguage-ecmascript *=slanguage-ecmascript /=tlanguage-ecmascript %=ulanguage-ecmascript <<=vlanguage-ecmascript >>=wlanguage-ecmascript >>>=xlanguage-ecmascript &=ylanguage-ecmascript ^=zlanguage-ecmascript |={language-ecmascript$Infix operators: see spec 11.5-11.11|language-ecmascript <}language-ecmascript <=~language-ecmascript >language-ecmascript >=language-ecmascript inlanguage-ecmascript  instanceoflanguage-ecmascript ==language-ecmascript !=language-ecmascript ===language-ecmascript !===language-ecmascript &&language-ecmascript ||language-ecmascript *language-ecmascript /language-ecmascript %language-ecmascript -language-ecmascript <<language-ecmascript >>language-ecmascript >>>language-ecmascript &language-ecmascript ^language-ecmascript |language-ecmascript +language-ecmascript(A script in <script> ... </script> tags.language-ecmascript*extracts statements from a JavaScript typelanguage-ecmascriptReturns  if the statement is an IterationStatement according to spec 12.6.language-ecmascriptThe ECMAScript standard defines certain syntactic restrictions on programs (or, more precisely, statements) that aren't easily enforced in the AST datatype. These restrictions have to do with labeled statements and break/continue statement, as well as identifier names. Thus, it is possible to manually generate AST's that correspond to syntactically incorrect programs. Use this predicate to check if an @ AST corresponds to a syntactically correct ECMAScript program.language-ecmascript;Checks if an identifier name is valid according to the speclanguage-ecmascriptChecks if the # represents a valid identifier namelanguage-ecmascript>Checks if a string is in the list of reserved ECMAScript wordslanguage-ecmascript<Checks if a character is valid at the start of an identifierlanguage-ecmascript4Checks if a character is valid in an identifier part !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!"#$%&'()*+,-./01234@AB>?89:;567<=CDEFGHIJKLMNOPQRSTUVWX{|}~nopqrstuvwxyzabcdefgh]^_`ijklmYZ[\ None 2456=>?X language-ecmascriptgA class of pretty-printable ECMAScript AST nodes. Will pretty-print correct JavaScript given that the  predicate holds for the AST. language-ecmascript)Pretty-print an ECMAScript AST node. Use render or  to convert  to .language-ecmascript$Print a list of items in parenthesis language-ecmascriptA predicate to tell if the expression --when pretty-printed-- will begin with "function" or '{' and be thus unsafe to use in an expression statement without wrapping it in '()'. language-ecmascriptDEPRECATED: Use  L instead! Renders a JavaScript program as a document, the show instance of $ will pretty-print it automatically language-ecmascriptDEPRECATED: Use  - instead! Renders a list of statements as a  language-ecmascriptDEPRECATED: Use  - instead! Renders a list of statements as a language-ecmascriptPretty prints a string assuming it's used as an identifier. Note that per Spec 7.6 unicode escape sequences representing illegal identifier characters are not allowed as well, so we do not unicode-escape illegal characters in identifiers anymore.language-ecmascriptJEscapes a regular expression so that it can be parsed correctly afterwardslanguage-ecmascriptppRelationalExpression True is RelationalExpression, ppRelationalExpression False is RelationalExpressionNoIn          None2456>X=None2456>X9language-ecmascriptEThe statically-determinate lexical structure of a JavaScript program.language-ecmascriptcIntermediate data structure that contains locally declared names and all references to identifers.language-ecmascriptenclosing environmentlanguage-ecmascript local environment and referenceslanguage-ecmascript"environment and global definitions!language-ecmascriptbrowser/testing environment !"!" None2456>X #language-ecmascriptDThings that have annotations -- for example, nodes in a syntax tree$language-ecmascript.Returns the annotation of the root of the tree%language-ecmascript-Sets the annotation of the root of the tree &language-ecmascriptRemoves annotations from a tree'language-ecmascriptHChanges all the labels in the tree to another one, given by a function.(language-ecmascript@add an extra field to the AST labels (the label would look like  (a, b) ))language-ecmascriptremove an extra field*language-ecmascriptAssigns unique numeric (Int) ids to each node in the AST. Returns a pair: the tree annotated with UID's and the last ID that was assigned.+language-ecmascript9Modify the annotation of the root node of the syntax tree*language-ecmascript starting idlanguage-ecmascript tree root #%$&'()*+ &'()*#%$+None2456>X language-ecmascriptpchecks if the label is not yet on the stack, if it is -- throws an error; otherwise it pushes it onto the stack:language-ecmascript4The parser that parses a single ECMAScript statement?language-ecmascript+A parser that parses ECMAScript expressionsAlanguage-ecmascript+A parser that parses an ECMAScript program.Blanguage-ecmascript,Parse from a stream given a parser, same as  ` in Parsec. We can use this to parse expressions or statements alone, not just whole programs.Clanguage-ecmascript$A convenience function that takes a 1 and tries to parse it as an ECMAScript program: "parseFromString = parse program ""Dlanguage-ecmascriptA convenience function that takes a filename and tries to parse the file contents an ECMAScript program, it fails with an error message if it can't.Elanguage-ecmascriptJRead a JavaScript program from file an parse it into a list of statementsFlanguage-ecmascript(Parse a JavaScript program from a stringGlanguage-ecmascript:Parse a JavaScript source string into a list of statementsBlanguage-ecmascriptThe parser to uselanguage-ecmascriptName of the source filelanguage-ecmascriptthe stream to parse, usually a Clanguage-ecmascriptJavaScript source to parseDlanguage-ecmascript file nameElanguage-ecmascript file nameFlanguage-ecmascriptsource file namelanguage-ecmascriptJavaScript source to parseGlanguage-ecmascriptJavaScript source456789:;<=>?@ABCDEFGB?:ACDFE@>G76<8954=;None2456>X !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  456789:;<=>?@ABCDEFG  None2456>XHlanguage-ecmascript+Labels are either strings (identifiers) or empty (see 12.12 of the spec)Klanguage-ecmascript8Annotates statements with their label sets; example use:+let jsa = reannotate (\a -> (a, Set.empty))Iin annotateLabelSets jsa snd (\labs (a, ls) -> (a, labs `Set.union` ls))language-ecmascript 12 ECMA262: the production  Identifier :  Statement is evaluated by adding  Identifier to the label ser of  Statement and then evluating  Statement . If the LabelledStatementT itsef has a non-empty label set, these labels are also added to the label set of  Statement5 before evaluating it. ... Prior to evaluation of a LabelledStatement, the contained  Statement@ is regarded as possessing an empty label set, unless it is an IterationStatement or a SwitchStatement\, in which case it is regarded as possessing a label set consisting of the single element, empty.Klanguage-ecmascriptannotation read functionlanguage-ecmascriptannotation write functionlanguage-ecmascriptthe script to annotateHIJKKHIJ None2456>Xlanguage-ecmascript)Convert an identifier to a String literallanguage-ecmascript1Helper function to convert LValues to expressionslanguage-ecmascript;Convert an expression to an l-value. May fail with an errorlPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~lPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None2456>Xۣ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOOPPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ [ \ ] ^ _ ` a b c d e f g h i j k l # m n o p q r s t u v w x y z { | } ~                                                                               3language-ecmascript-0.19.1.0-HgOfzO79CKh8zcRN4cQio0Language.ECMAScript3.SyntaxLanguage.ECMAScript3.ParserLanguage.ECMAScript3.Lexer Language.ECMAScript3.PrettyPrintLanguage.ECMAScript3.SourceDiff)Language.ECMAScript3.Analysis.Environment'Language.ECMAScript3.Syntax.Annotations'Language.ECMAScript3.Analysis.LabelSets#Language.ECMAScript3.Syntax.CodeGen&Language.ECMAScript3.Syntax.QuasiQuote!Language.ECMAScript3.Parser.State Language.ECMAScript3.Parser.Type Text.ParsecparseLanguage.ECMAScript3parsec-3.1.13.0Text.Parsec.Pos SourcePosParseridentifierStart identifierreservedoperator reservedOp charLiteral stringLiteralsymbol whiteSpaceparensbracessquaressemicommacolondotbracketslexeme decIntLit decDigitsOpt decDigits hexIntLit exponentPartdecLit HasLabelSet getLabelSet setLabelSetEnclosingStatement EnclosingIterEnclosingSwitchEnclosingOther Statement BlockStmt EmptyStmtExprStmtIfStmt IfSingleStmt SwitchStmt WhileStmt DoWhileStmt BreakStmt ContinueStmt LabelledStmt ForInStmtForStmtTryStmt ThrowStmt ReturnStmtWithStmt VarDeclStmt FunctionStmt ForInInitForInVar ForInLValForInitNoInitVarInitExprInitVarDecl CatchClause CaseClause CaseDefault Expression StringLit RegexpLitNumLitIntLitBoolLitNullLitArrayLit ObjectLitThisRefVarRefDotRef BracketRefNewExpr PrefixExprUnaryAssignExpr InfixExprCondExpr AssignExprListExprCallExprFuncExprLValueLVarLDotLBracketPropPropId PropStringPropNumPrefixOp PrefixLNot PrefixBNot PrefixPlus PrefixMinus PrefixTypeof PrefixVoid PrefixDelete UnaryAssignOp PrefixInc PrefixDec PostfixInc PostfixDecAssignOpOpAssign OpAssignAdd OpAssignSub OpAssignMul OpAssignDiv OpAssignModOpAssignLShiftOpAssignSpRShiftOpAssignZfRShift OpAssignBAnd OpAssignBXor OpAssignBOrInfixOpOpLTOpLEqOpGTOpGEqOpIn OpInstanceofOpEqOpNEq OpStrictEq OpStrictNEqOpLAndOpLOrOpMulOpDivOpModOpSubOpLShift OpSpRShift OpZfRShiftOpBAndOpBXorOpBOrOpAddId JavaScriptScript unJavaScriptunIdisIterationStmtisValid pushEnclosing pushLabelisValidIdentifierisValidIdentifierNameisReservedWordisValidIdStart isValidIdPartisIter isIterSwitch$fDefaultSourcePos$fDefaultJavaScript$fHasLabelSetEnclosingStatement$fShowEnclosingStatement$fShowId$fEqId$fOrdId$fDataId $fFunctorId $fFoldableId$fTraversableId $fShowInfixOp $fDataInfixOp $fEqInfixOp $fOrdInfixOp $fEnumInfixOp$fShowAssignOp$fDataAssignOp $fEqAssignOp $fOrdAssignOp$fShowUnaryAssignOp$fDataUnaryAssignOp$fEqUnaryAssignOp$fOrdUnaryAssignOp$fShowPrefixOp$fDataPrefixOp $fEqPrefixOp $fOrdPrefixOp $fShowProp $fDataProp$fEqProp $fOrdProp $fFunctorProp$fFoldableProp$fTraversableProp$fShowStatement$fDataStatement $fEqStatement$fOrdStatement$fFunctorStatement$fFoldableStatement$fTraversableStatement$fShowForInInit$fDataForInInit $fEqForInInit$fOrdForInInit$fFunctorForInInit$fFoldableForInInit$fTraversableForInInit $fShowLValue $fEqLValue $fOrdLValue $fDataLValue$fFunctorLValue$fFoldableLValue$fTraversableLValue$fShowExpression$fDataExpression$fEqExpression$fOrdExpression$fFunctorExpression$fFoldableExpression$fTraversableExpression $fShowForInit $fDataForInit $fEqForInit $fOrdForInit$fFunctorForInit$fFoldableForInit$fTraversableForInit $fShowVarDecl $fDataVarDecl $fEqVarDecl $fOrdVarDecl$fFunctorVarDecl$fFoldableVarDecl$fTraversableVarDecl$fShowCatchClause$fDataCatchClause$fEqCatchClause$fOrdCatchClause$fFunctorCatchClause$fFoldableCatchClause$fTraversableCatchClause$fShowCaseClause$fDataCaseClause$fEqCaseClause$fOrdCaseClause$fFunctorCaseClause$fFoldableCaseClause$fTraversableCaseClause$fShowJavaScript$fDataJavaScript$fEqJavaScript$fOrdJavaScript$fFunctorJavaScript$fFoldableJavaScript$fTraversableJavaScriptPPppPretty prettyPrintunsafeInExprStmt javaScriptrenderStatementsrenderExpression $fPrettyId $fPrettyProp$fPrettyPrefixOp$fPrettyAssignOp$fPrettyInfixOp$fPrettyCaseClause$fPrettyVarDecl$fPrettyLValue$fPrettyForInInit$fPrettyForInit$fPrettyCatchClause$fPrettyStatement$fPrettyExpression $fPretty[]$fPrettyJavaScript$fPPajsDiffEnvTreeenv localVars HasAnnotation getAnnotation setAnnotationremoveAnnotations reannotateaddExtraAnnotationFieldremoveExtraAnnotationFieldassignUniqueIdswithAnnotation$fHasAnnotationId$fHasAnnotationCatchClause$fHasAnnotationCaseClause$fHasAnnotationProp$fHasAnnotationVarDecl$fHasAnnotationLValue$fHasAnnotationStatement$fHasAnnotationExpressionExpressionParserStatementParserParsedExpressionParsedStatementparseBlockStmtparseStatement statementparseObjectLitparseSimpleExpr' assignExprparseExpression expression parseScriptprogramparseFromString parseFromFileparseJavaScriptFromFileparseScriptFromString parseStringLabel EmptyLabelannotateLabelSets $fOrdLabel $fEqLabel $fShowLabel $fDataLabelscriptidentpropIdpropSpropNlvarldotlbrackstringregexpnumberboolintnull_arrayobjectthisvarbracknewprefixlnotbnotplusminustypeofvoiddeleteuassignpreincpredecpostincpostdecinfixeltlegtgein_ instanceofeqneqsteqstneqlandlormuldivmodsublshiftsrshiftzrshiftbandborxoraddcondassignopassign assignadd assignsub assignmul assigndiv assignmod assignlshift assignsrshift assignzrshift assignband assignxor assignborlistcallfunclambdacaseedefaultccatchvardeclvarinitblockemptyexprifteiftswitchwhiledowhilebreakcontinuelabelforinfortrytrycatch tryfinallytrycatchfinallythrowreturnsretwithvardeclsfunction id2stringlv2ee2lv forInInit2lv$fIsStringExpression$fIsStringLValue$fIsStringProp $fIsStringIdjsexprjsstmtjs ParserStateghc-prim GHC.TypesTruebaseGHC.BaseStringGHC.Showshow+ansi-wl-pprint-0.6.9-4BBaRKtKBOB3AcAXGcbl1v%Text.PrettyPrint.ANSI.Leijen.InternalDoc parenListprintIdentifierName regexpEscapeppRelationalExpressionPartial makeEnvTreeannotateStatement