7s       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    NoneB The different tokens. HlStateB is 0 when outside of a multi-line comment and -1 when inside one. The constructors for Operator0 have an apostrophe as a suffix because e.g. LT is already used by Prelude.-The constructors for Reserved+ have an apostrophe as a suffix because Default" is already used. Also note that  Undefined' is not intended as some sort of "backup" reserved word for things we don't care about -- it really means the "undefined" built-in in JavaScript. The Line0 constructor represents a single-line comment. Start and EndH represent the start and end of a multi-line comment, respectively. Text0 represents the text in a multi-line comment.LPrefix operators. NOTE: Add' is also a valid prefix operator, but since it's completely useless in the real world, we don't care about it here. Doing this makes parsing much, much easier.MPostfix operators.NInfix operators.PTakes a 7 and returns a style to be used for that type of token. TODO: The  check is potentially unnecessarily slow. We could split the Const constructor into two different ones, one for builtins and one for others.Given a String& representing an operator, returns an  % with the appropriate constructor.Given a String) representing a reserved word, returns a -% with the appropriate constructor.Q7Scan one token. Return (maybe) a token and a new state.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#K$%&'()LMN*OP+Q,-./0123456789:;<=>?@ABCDEFGHIJKLMRR   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQROQPK -./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+, LNM=   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#K$%&'()LMN*OP+Q,-./0123456789:;<=>?@ABCDEFGHIJKLMRGPL-2yi-devel@googlegroups.com experimentalportableNone049;(pTRepresents either a variable name or a variable name assigned to an expression. AssBeg is a variable name maybe followed by an assignment. AssRst' is an equals sign and an expression. (AssBeg x (Just (AssRst '=' '5'))) means x = 5. Instances of Failablep can represent failure. This is a useful class for future work, since then we can make stroking much easier. Instances of  Strokable/ are datatypes which can be syntax highlighted.Normal stroker.Error stroker.^Given a new style and a stroke, return a stroke with the new style appended to the old one.,Given a list of tokens to check for errors (xs%) and a list of tokens to stroke (xs'), returns normal strokes for xs'A if there were no errors. Otherwise returns error strokes for xs'.Given a list of TT , if any of them is an error, returns an error stroker, otherwise a normal stroker. Using e.g. existentials, we could make this more general and have support for heterogeneous lists of elements which implement Failable, but I haven't had the time to fix this.Given a TT , return a Stroke for it.The main stroking function. Main parser.HParser for statements such as "return", "while", "do-while", "for", etc.MParser for "blocks", i.e. a bunch of statements wrapped in curly brackets or just a single statement.Note that this works for JavaScript 1.8 "lambda" style function bodies as well, e.g. "function hello() 5", since expressions are also statements and we don't require a trailing semi-colon.5TODO: function hello() var x; is not a valid program.Parser for expressions which may be statements. In reality, any expression is also a valid statement, but this is a slight compromise to get rid of the massive performance loss which is introduced when allowing JavaScript objects to be valid statements.@The basic idea here is to parse "the rest" of expressions, e.g. + 3 in x + 3 or [i] in x[i]y. Anything which is useful in such a scenario goes here. TODO: This accepts [], but shouldn't, since x[] is invalid.Parser for expressions.zParses both empty and non-empty arrays. Should probably be split up into further parts to allow for the separation of [] and  [1, 2, 3].!Parses a semicolon if it's there.3Parses a comma-separated list of valid identifiers.Parses a comment.Parses a prefix operator.Parses a infix operator.Parses a postfix operator.Parses any literal.Parses any literal.Parses any string.Parses any valid number.Parses any valid identifier.Parses any boolean.Parses a reserved word.Parses a special token.Parses an operator.!Expects a token x, recovers with .Expects a special token.Expects an expression.0General recovery parser, inserts an error token.Weighted recovery.Better name for N.Better name for O.<TODO: This code is *screaming* for some generic programming.TODO: Somehow fix Failable and failStroker to be more "generic". This will make these instances much nicer and we won't have to make ad-hoc stuff like this.x[\]^_`abcdefghijklmnopqrstuvwxyz{|}~f[\]^_`abcdefghijklmnopqrstuvwxyz{|}~x|}~xyz{tuvwpqrsbcdefghijklmno^_`a[\]K[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~ None9:;0The main verifier which calls the sub-verifiers.{Given a list of function declarations, checks for multiple function declarations, including the functions' subfunctions. Given two Tok t, compares the ts.3Returns a list of the functions in the given block.Given a *, returns the token representing the name.Given a #, returns its inner body as a list.Given a  ValidName* returns the string representing the name.Like P+ but drops the first element in the result.GPL-2yi-devel@googlegroups.com experimentalportableNone0IHooks for the JavaScript mode.QThe "compiler."R9Returns the JS verifier buffer, creating it if necessary.S*Creates a new empty buffer and returns it.TVGiven a filename, a BufferRef and a list of errors, prints the errors in that buffer. UVWXYQRST  UVWXYQRST None    Safe Z[\]^_`abcdef[abcdef Z[\]^_`abcdefg      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbcdefghijklmnopqrstuvwxyzz{|}~h      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRPQSTUVWXYZZ[\]^_`abcdefghijk0yi-mode-javascript-0.13.6-3qU4xb3pTjR7Ip9J7d6dAkYi.Lexer.JavaScriptYi.Syntax.JavaScriptYi.Verifier.JavaScriptYi.Mode.JavaScript Yi.Config.Default.JavaScriptModePaths_yi_mode_javascriptTokenUnknownResStrRexOpSpecialNumber ValidNameCommentConstHlStateOperatorAdd' Subtract' Multiply'Divide'Modulo' Increment' Decrement'Assign' AddAssign'SubtractAssign'MultiplyAssign' DivideAssign' ModuloAssign'Equals' NotEquals'GT'GTE'LT'LTE' EqualsType'NotEqualsType'And'Or'Not'BitAnd'BitOr'BitXor' LeftShift' RightShift' RightShiftZ'BitNot'Qualify'ReservedBreak'Case'Catch' Continue'Default'Delete'Do'Else'Finally'For' Function'If'In' InstanceOf'New'Return'Switch'This'Throw'Try'TypeOf'Var'Void'While'With'True'False'Null' Undefined'TTprefixOperatorspostfixOperatorsinfixOperators initState tokenToStyle alexScanToken$fFunctorAlexLastAcc$fShowCommentType$fEqCommentType$fShowReserved $fEqReserved$fShowOperator $fEqOperator $fShowToken $fEqTokenKeyValue KeyValueErrArrayArrContArrRestArrErrExprExprObj ExprPrefixExprNew ExprSimple ExprParen ExprAnonFun ExprTypeOf ExprFunCallOpExprExprCondExprArrPostExprExprErr VarDecAssAssBegAssRstAssErrBlockBlockOneBlockErr ForContent ForNormalForInForErrParExpr ParExprErr ParametersParErr StatementFunDeclVarDeclReturnWhileDoWhileForIfElseWithComm SemicolonTreeBListFailablestupid hasFailed Strokable toStrokesnormalerrorone modStrokenError failStroker tokenToStroke getStrokesparse statementblockstmtExpropExpr expressionarray semicolon parametersparExprcommentpreOpinOppostOpopTok simpleTokstrToknumToknamebooleanresspcoperplzTokplzSpcplzExprplzanythinghate fromBlockfirstTok errorTokenisErrortoTTfromTT$fStrokableArray$fStrokableTok$fStrokableKeyValue$fStrokableParExpr$fStrokableParameters$fStrokableExpr$fStrokableVarDecAss$fStrokableBlock$fStrokableForContent$fStrokableStatement$fFailableKeyValue$fFailableExpr$fFailableParExpr$fFailableParameters$fFailableVarDecAss$fFailableBlock$fFailableForContent$fIsTreeStatement$fShowParameters$fDataParameters$fFoldableParameters$fShowKeyValue$fDataKeyValue$fFoldableKeyValue $fShowExpr $fDataExpr$fFoldableExpr $fShowArray $fDataArray$fFoldableArray $fShowBlock $fDataBlock$fFoldableBlock$fShowStatement$fDataStatement$fFoldableStatement$fShowVarDecAss$fDataVarDecAss$fFoldableVarDecAss$fShowForContent$fDataForContent$fFoldableForContent $fShowParExpr $fDataParExpr$fFoldableParExprReportErrWarnWarningUnreachableCodeErrorMultipleFunctionDeclarationverifycheckMultipleFunscheckUnreachablettEqsayisReturn findFunctionsfunNamefunBodynameOf dropWhile'dupsBy $fShowReport $fShowWarning $fShowError $fEqError $fEqWarning $fEqReportjavaScriptModehooks$fYiVariableJSBuffer$fDefaultJSBuffer$fBinaryJSBufferconfigureJavaScriptMode CommentTypebase Data.FoldableelemopToOpresToResAlexAcc AlexAccNone AlexAccSkip AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA#LineStartEndText alex_tab_size alex_base alex_table alex_check alex_deflt alex_accept stateToInitbuiltinConstructors alexScan' alexScanUser'alex_scan_tkn'cmmscshtmlcomm multicomm alex_action_1 alex_action_2 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_16alex_action_17alex_action_18alex_action_20alex_action_21alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn)yi-language-0.13.6-3wAhMHM6UKvAiQXFO9D7dp Yi.Lexer.AlextokFromTtokTGHC.List dropWhile jsCompile getJSBuffer mkJSBufferjsErrorsJSBufferjavaScriptAbstractjsSimpleIndentjsLexercatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName