Îõ³h**h$Œ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹0.19.1 Safe-Inferred÷ŒŽ‘’“ Safe-InferredË & yi-mode-javascriptThe different tokens. yi-mode-javascriptHlState is 0 when outside of a multi-line comment and -1 when inside one. yi-mode-javascriptThe constructors for Operator0 have an apostrophe as a suffix because e.g. LT is already used by Prelude.-yi-mode-javascriptThe 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.”yi-mode-javascriptThe Line0 constructor represents a single-line comment. Start and EndÈ represent the start and end of a multi-line comment, respectively. Text0 represents the text in a multi-line comment.Lyi-mode-javascriptÂPrefix 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.Myi-mode-javascriptPostfix operators.Nyi-mode-javascriptInfix operators.Pyi-mode-javascriptTakes 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.–yi-mode-javascriptGiven a String& representing an operator, returns an  % with the appropriate constructor.—yi-mode-javascriptGiven a String) representing a reserved word, returns a -% with the appropriate constructor.Qyi-mode-javascript7Scan one token. Return (maybe) a token and a new state.ÒOQPK  -./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+, LNMÒOQPK  -./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+, LNMGPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred7;ÂÄ“(oyi-mode-javascriptÔRepresents 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.yi-mode-javascript Instances of Failableð can represent failure. This is a useful class for future work, since then we can make stroking much easier.“yi-mode-javascript Instances of  Strokable/ are datatypes which can be syntax highlighted.•yi-mode-javascriptNormal stroker.–yi-mode-javascriptError stroker.˜yi-mode-javascriptÞGiven a new style and a stroke, return a stroke with the new style appended to the old one.™yi-mode-javascript,Given a list of tokens to check for errors (xs%) and a list of tokens to stroke (xs'), returns normal strokes for xs'Á if there were no errors. Otherwise returns error strokes for xs'.šyi-mode-javascriptGiven 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.›yi-mode-javascriptGiven a TT , return a Stroke for it.œyi-mode-javascriptThe main stroking function.yi-mode-javascript Main parser.žyi-mode-javascriptÈParser for statements such as "return", "while", "do-while", "for", etc.Ÿyi-mode-javascriptÍParser 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. yi-mode-javascript‡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.¡yi-mode-javascriptÀThe basic idea here is to parse "the rest" of expressions, e.g. + 3 in x + 3 or [i] in x[i]ù. Anything which is useful in such a scenario goes here. TODO: This accepts [], but shouldn't, since x[] is invalid.¢yi-mode-javascriptParser for expressions.£yi-mode-javascriptúParses both empty and non-empty arrays. Should probably be split up into further parts to allow for the separation of [] and  [1, 2, 3].¤yi-mode-javascript!Parses a semicolon if it's there.¥yi-mode-javascript3Parses a comma-separated list of valid identifiers.§yi-mode-javascriptParses a comment.¨yi-mode-javascriptParses a prefix operator.©yi-mode-javascriptParses a infix operator.ªyi-mode-javascriptParses a postfix operator.«yi-mode-javascriptParses any literal.¬yi-mode-javascriptParses any literal.­yi-mode-javascriptParses any string.®yi-mode-javascriptParses any valid number.¯yi-mode-javascriptParses any valid identifier.°yi-mode-javascriptParses any boolean.±yi-mode-javascriptParses a reserved word.²yi-mode-javascriptParses a special token.³yi-mode-javascriptParses an operator.´yi-mode-javascript!Expects a token x, recovers with ¼.µyi-mode-javascriptExpects a special token.¶yi-mode-javascriptExpects an expression.¸yi-mode-javascript0General recovery parser, inserts an error token.¹yi-mode-javascriptWeighted recovery.¾yi-mode-javascriptBetter name for ˜.¿yi-mode-javascriptBetter name for ™.Êyi-mode-javascript?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbcdefghijklmnopqrstuvwxyzz{|}~€‚ƒƒ„…†‡ˆ‰Š‹ŒŽh‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸž ˜¡¢£¤¥¦§0yi-mode-javascript-0.19.1-C2n42LGuBoo5bKPY07MhrTYi.Lexer.JavaScriptYi.Syntax.JavaScriptYi.Verifier.JavaScriptYi.Mode.JavaScript Yi.Config.Default.JavaScriptModeyi-mode-javascriptPaths_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 $fShowToken $fEqToken$fShowOperator $fEqOperator$fShowReserved $fEqReserved$fShowCommentType$fEqCommentTypeKeyValue 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$fStrokableTok$fStrokableParameters$fFailableParameters$fStrokableArray$fStrokableKeyValue$fStrokableParExpr$fStrokableExpr$fStrokableVarDecAss$fStrokableBlock$fStrokableForContent$fStrokableStatement$fFailableKeyValue$fFailableExpr$fFailableParExpr$fFailableVarDecAss$fFailableBlock$fFailableForContent$fIsTreeStatement$fShowKeyValue$fDataKeyValue$fFoldableKeyValue $fShowExpr $fDataExpr$fFoldableExpr $fShowArray $fDataArray$fFoldableArray $fShowBlock $fDataBlock$fFoldableBlock$fShowStatement$fDataStatement$fFoldableStatement$fShowVarDecAss$fDataVarDecAss$fFoldableVarDecAss$fShowForContent$fDataForContent$fFoldableForContent $fShowParExpr $fDataParExpr$fFoldableParExpr$fShowParameters$fDataParameters$fFoldableParametersReportErrWarnWarningUnreachableCodeErrorMultipleFunctionDeclarationverifycheckMultipleFunscheckUnreachablettEqsayisReturn findFunctionsfunNamefunBodynameOf dropWhile'dupsBy $fShowError $fShowWarning $fShowReport $fEqReport $fEqWarning $fEqErrorjavaScriptModehooks$fYiVariableJSBuffer$fDefaultJSBuffer$fBinaryJSBufferconfigureJavaScriptModeversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDir CommentTypebase Data.FoldableelemopToOpresToRes(yi-language-0.19.1-7yURWM7ILZ1cLAgM9JSB0 Yi.Lexer.AlextokFromTtokTGHC.List dropWhile jsCompile getJSBuffer mkJSBufferjsErrors