UNPKG

atomize-client

Version:

Client library for AtomizeJS: JavaScript DSTM

1,503 lines (1,405 loc) 640 kB
/* * This file is generated by pegjs with the input grammar as * javascript.pegjs: * * ./node_modules/pegjs/bin/pegjs javascript.pegjs javascript_parser.js * */ module.exports = (function(){ /* Generated by PEG.js 0.6.2 (http://pegjs.majda.cz/). */ var result = { /* * Parses the input with a generated parser. If the parsing is successfull, * returns a value explicitly or implicitly specified by the grammar from * which the parser was generated (see |PEG.buildParser|). If the parsing is * unsuccessful, throws |PEG.parser.SyntaxError| describing the error. */ parse: function(input, startRule) { var parseFunctions = { "AdditiveExpression": parse_AdditiveExpression, "AdditiveOperator": parse_AdditiveOperator, "ArgumentList": parse_ArgumentList, "Arguments": parse_Arguments, "ArrayLiteral": parse_ArrayLiteral, "AssignmentExpression": parse_AssignmentExpression, "AssignmentExpressionNoIn": parse_AssignmentExpressionNoIn, "AssignmentOperator": parse_AssignmentOperator, "BitwiseANDExpression": parse_BitwiseANDExpression, "BitwiseANDExpressionNoIn": parse_BitwiseANDExpressionNoIn, "BitwiseANDOperator": parse_BitwiseANDOperator, "BitwiseORExpression": parse_BitwiseORExpression, "BitwiseORExpressionNoIn": parse_BitwiseORExpressionNoIn, "BitwiseOROperator": parse_BitwiseOROperator, "BitwiseXORExpression": parse_BitwiseXORExpression, "BitwiseXORExpressionNoIn": parse_BitwiseXORExpressionNoIn, "BitwiseXOROperator": parse_BitwiseXOROperator, "Block": parse_Block, "BooleanLiteral": parse_BooleanLiteral, "BreakStatement": parse_BreakStatement, "BreakToken": parse_BreakToken, "CallExpression": parse_CallExpression, "CaseBlock": parse_CaseBlock, "CaseClause": parse_CaseClause, "CaseClauses": parse_CaseClauses, "CaseToken": parse_CaseToken, "Catch": parse_Catch, "CatchToken": parse_CatchToken, "CharacterEscapeSequence": parse_CharacterEscapeSequence, "Comment": parse_Comment, "ConditionalExpression": parse_ConditionalExpression, "ConditionalExpressionNoIn": parse_ConditionalExpressionNoIn, "ContinueStatement": parse_ContinueStatement, "ContinueToken": parse_ContinueToken, "DebuggerStatement": parse_DebuggerStatement, "DebuggerToken": parse_DebuggerToken, "DecimalDigit": parse_DecimalDigit, "DecimalDigits": parse_DecimalDigits, "DecimalIntegerLiteral": parse_DecimalIntegerLiteral, "DecimalLiteral": parse_DecimalLiteral, "DefaultClause": parse_DefaultClause, "DefaultToken": parse_DefaultToken, "DeleteToken": parse_DeleteToken, "DoToken": parse_DoToken, "DoWhileStatement": parse_DoWhileStatement, "DoubleStringCharacter": parse_DoubleStringCharacter, "DoubleStringCharacters": parse_DoubleStringCharacters, "EOF": parse_EOF, "EOS": parse_EOS, "EOSNoLineTerminator": parse_EOSNoLineTerminator, "ElementList": parse_ElementList, "Elision": parse_Elision, "ElseToken": parse_ElseToken, "EmptyStatement": parse_EmptyStatement, "EqualityExpression": parse_EqualityExpression, "EqualityExpressionNoIn": parse_EqualityExpressionNoIn, "EqualityOperator": parse_EqualityOperator, "EscapeCharacter": parse_EscapeCharacter, "EscapeSequence": parse_EscapeSequence, "ExponentIndicator": parse_ExponentIndicator, "ExponentPart": parse_ExponentPart, "Expression": parse_Expression, "ExpressionNoIn": parse_ExpressionNoIn, "ExpressionStatement": parse_ExpressionStatement, "FalseToken": parse_FalseToken, "Finally": parse_Finally, "FinallyToken": parse_FinallyToken, "ForInStatement": parse_ForInStatement, "ForStatement": parse_ForStatement, "ForToken": parse_ForToken, "FormalParameterList": parse_FormalParameterList, "FunctionBody": parse_FunctionBody, "FunctionDeclaration": parse_FunctionDeclaration, "FunctionExpression": parse_FunctionExpression, "FunctionToken": parse_FunctionToken, "FutureReservedWord": parse_FutureReservedWord, "GetToken": parse_GetToken, "HexDigit": parse_HexDigit, "HexEscapeSequence": parse_HexEscapeSequence, "HexIntegerLiteral": parse_HexIntegerLiteral, "Identifier": parse_Identifier, "IdentifierName": parse_IdentifierName, "IdentifierPart": parse_IdentifierPart, "IdentifierStart": parse_IdentifierStart, "IfStatement": parse_IfStatement, "IfToken": parse_IfToken, "InToken": parse_InToken, "Initialiser": parse_Initialiser, "InitialiserNoIn": parse_InitialiserNoIn, "InstanceofToken": parse_InstanceofToken, "IterationStatement": parse_IterationStatement, "Keyword": parse_Keyword, "LabelledStatement": parse_LabelledStatement, "LeftHandSideExpression": parse_LeftHandSideExpression, "LineContinuation": parse_LineContinuation, "LineTerminator": parse_LineTerminator, "LineTerminatorSequence": parse_LineTerminatorSequence, "Literal": parse_Literal, "Ll": parse_Ll, "Lm": parse_Lm, "Lo": parse_Lo, "LogicalANDExpression": parse_LogicalANDExpression, "LogicalANDExpressionNoIn": parse_LogicalANDExpressionNoIn, "LogicalANDOperator": parse_LogicalANDOperator, "LogicalORExpression": parse_LogicalORExpression, "LogicalORExpressionNoIn": parse_LogicalORExpressionNoIn, "LogicalOROperator": parse_LogicalOROperator, "Lt": parse_Lt, "Lu": parse_Lu, "Mc": parse_Mc, "MemberExpression": parse_MemberExpression, "Mn": parse_Mn, "MultiLineComment": parse_MultiLineComment, "MultiLineCommentNoLineTerminator": parse_MultiLineCommentNoLineTerminator, "MultiplicativeExpression": parse_MultiplicativeExpression, "MultiplicativeOperator": parse_MultiplicativeOperator, "Nd": parse_Nd, "NewExpression": parse_NewExpression, "NewToken": parse_NewToken, "Nl": parse_Nl, "NonEscapeCharacter": parse_NonEscapeCharacter, "NonZeroDigit": parse_NonZeroDigit, "NullLiteral": parse_NullLiteral, "NullToken": parse_NullToken, "NumericLiteral": parse_NumericLiteral, "ObjectLiteral": parse_ObjectLiteral, "Pc": parse_Pc, "PostfixExpression": parse_PostfixExpression, "PostfixOperator": parse_PostfixOperator, "PrimaryExpression": parse_PrimaryExpression, "Program": parse_Program, "PropertyAssignment": parse_PropertyAssignment, "PropertyName": parse_PropertyName, "PropertyNameAndValueList": parse_PropertyNameAndValueList, "RegularExpressionBackslashSequence": parse_RegularExpressionBackslashSequence, "RegularExpressionBody": parse_RegularExpressionBody, "RegularExpressionChar": parse_RegularExpressionChar, "RegularExpressionChars": parse_RegularExpressionChars, "RegularExpressionClass": parse_RegularExpressionClass, "RegularExpressionClassChar": parse_RegularExpressionClassChar, "RegularExpressionClassChars": parse_RegularExpressionClassChars, "RegularExpressionFirstChar": parse_RegularExpressionFirstChar, "RegularExpressionFlags": parse_RegularExpressionFlags, "RegularExpressionLiteral": parse_RegularExpressionLiteral, "RegularExpressionNonTerminator": parse_RegularExpressionNonTerminator, "RelationalExpression": parse_RelationalExpression, "RelationalExpressionNoIn": parse_RelationalExpressionNoIn, "RelationalOperator": parse_RelationalOperator, "RelationalOperatorNoIn": parse_RelationalOperatorNoIn, "ReservedWord": parse_ReservedWord, "ReturnStatement": parse_ReturnStatement, "ReturnToken": parse_ReturnToken, "SetToken": parse_SetToken, "ShiftExpression": parse_ShiftExpression, "ShiftOperator": parse_ShiftOperator, "SignedInteger": parse_SignedInteger, "SingleEscapeCharacter": parse_SingleEscapeCharacter, "SingleLineComment": parse_SingleLineComment, "SingleStringCharacter": parse_SingleStringCharacter, "SingleStringCharacters": parse_SingleStringCharacters, "SourceCharacter": parse_SourceCharacter, "SourceElements": parse_SourceElements, "Statement": parse_Statement, "StatementList": parse_StatementList, "StringLiteral": parse_StringLiteral, "SwitchStatement": parse_SwitchStatement, "SwitchToken": parse_SwitchToken, "ThisToken": parse_ThisToken, "ThrowStatement": parse_ThrowStatement, "ThrowToken": parse_ThrowToken, "TrueToken": parse_TrueToken, "TryStatement": parse_TryStatement, "TryToken": parse_TryToken, "TypeofToken": parse_TypeofToken, "UnaryExpression": parse_UnaryExpression, "UnaryOperator": parse_UnaryOperator, "UnicodeCombiningMark": parse_UnicodeCombiningMark, "UnicodeEscapeSequence": parse_UnicodeEscapeSequence, "UnicodeLetter": parse_UnicodeLetter, "VarToken": parse_VarToken, "VariableDeclaration": parse_VariableDeclaration, "VariableDeclarationList": parse_VariableDeclarationList, "VariableDeclarationListNoIn": parse_VariableDeclarationListNoIn, "VariableDeclarationNoIn": parse_VariableDeclarationNoIn, "VariableStatement": parse_VariableStatement, "VoidToken": parse_VoidToken, "WhileStatement": parse_WhileStatement, "WhileToken": parse_WhileToken, "WhiteSpace": parse_WhiteSpace, "WithStatement": parse_WithStatement, "WithToken": parse_WithToken, "Zs": parse_Zs, "_": parse__, "__": parse___, "start": parse_start }; if (startRule !== undefined) { if (parseFunctions[startRule] === undefined) { throw new Error("Invalid rule name: " + quote(startRule) + "."); } } else { startRule = "start"; } var pos = 0; var reportMatchFailures = true; var rightmostMatchFailuresPos = 0; var rightmostMatchFailuresExpected = []; var cache = {}; function padLeft(input, padding, length) { var result = input; var padLength = length - input.length; for (var i = 0; i < padLength; i++) { result = padding + result; } return result; } function escape(ch) { var charCode = ch.charCodeAt(0); if (charCode <= 0xFF) { var escapeChar = 'x'; var length = 2; } else { var escapeChar = 'u'; var length = 4; } return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); } function quote(s) { /* * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a * string literal except for the closing quote character, backslash, * carriage return, line separator, paragraph separator, and line feed. * Any character may appear in the form of an escape sequence. */ return '"' + s .replace(/\\/g, '\\\\') // backslash .replace(/"/g, '\\"') // closing quote character .replace(/\r/g, '\\r') // carriage return .replace(/\n/g, '\\n') // line feed .replace(/[\x80-\uFFFF]/g, escape) // non-ASCII characters + '"'; } function matchFailed(failure) { if (pos < rightmostMatchFailuresPos) { return; } if (pos > rightmostMatchFailuresPos) { rightmostMatchFailuresPos = pos; rightmostMatchFailuresExpected = []; } rightmostMatchFailuresExpected.push(failure); } function parse_start() { var cacheKey = 'start@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedPos0 = pos; var savedPos1 = pos; var result3 = parse___(); if (result3 !== null) { var result4 = parse_Program(); if (result4 !== null) { var result5 = parse___(); if (result5 !== null) { var result1 = [result3, result4, result5]; } else { var result1 = null; pos = savedPos1; } } else { var result1 = null; pos = savedPos1; } } else { var result1 = null; pos = savedPos1; } var result2 = result1 !== null ? (function(program) { return program; })(result1[1]) : null; if (result2 !== null) { var result0 = result2; } else { var result0 = null; pos = savedPos0; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_SourceCharacter() { var cacheKey = 'SourceCharacter@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } if (input.length > pos) { var result0 = input.charAt(pos); pos++; } else { var result0 = null; if (reportMatchFailures) { matchFailed('any character'); } } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_WhiteSpace() { var cacheKey = 'WhiteSpace@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedReportMatchFailures = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos).match(/^[ \xA0\uFEFF]/) !== null) { var result2 = input.charAt(pos); pos++; } else { var result2 = null; if (reportMatchFailures) { matchFailed("[ \\xA0\\uFEFF]"); } } if (result2 !== null) { var result0 = result2; } else { var result1 = parse_Zs(); if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; } reportMatchFailures = savedReportMatchFailures; if (reportMatchFailures && result0 === null) { matchFailed("whitespace"); } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_LineTerminator() { var cacheKey = 'LineTerminator@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } if (input.substr(pos).match(/^[\n\r\u2028\u2029]/) !== null) { var result0 = input.charAt(pos); pos++; } else { var result0 = null; if (reportMatchFailures) { matchFailed("[\\n\\r\\u2028\\u2029]"); } } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_LineTerminatorSequence() { var cacheKey = 'LineTerminatorSequence@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedReportMatchFailures = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos, 1) === "\n") { var result5 = "\n"; pos += 1; } else { var result5 = null; if (reportMatchFailures) { matchFailed("\"\\n\""); } } if (result5 !== null) { var result0 = result5; } else { if (input.substr(pos, 2) === "\r\n") { var result4 = "\r\n"; pos += 2; } else { var result4 = null; if (reportMatchFailures) { matchFailed("\"\\r\\n\""); } } if (result4 !== null) { var result0 = result4; } else { if (input.substr(pos, 1) === "\r") { var result3 = "\r"; pos += 1; } else { var result3 = null; if (reportMatchFailures) { matchFailed("\"\\r\""); } } if (result3 !== null) { var result0 = result3; } else { if (input.substr(pos, 1) === "\u2028") { var result2 = "\u2028"; pos += 1; } else { var result2 = null; if (reportMatchFailures) { matchFailed("\"\\u2028\""); } } if (result2 !== null) { var result0 = result2; } else { if (input.substr(pos, 1) === "\u2029") { var result1 = "\u2029"; pos += 1; } else { var result1 = null; if (reportMatchFailures) { matchFailed("\"\\u2029\""); } } if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; }; }; }; } reportMatchFailures = savedReportMatchFailures; if (reportMatchFailures && result0 === null) { matchFailed("end of line"); } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_Comment() { var cacheKey = 'Comment@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedReportMatchFailures = reportMatchFailures; reportMatchFailures = false; var result2 = parse_MultiLineComment(); if (result2 !== null) { var result0 = result2; } else { var result1 = parse_SingleLineComment(); if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; } reportMatchFailures = savedReportMatchFailures; if (reportMatchFailures && result0 === null) { matchFailed("comment"); } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_MultiLineComment() { var cacheKey = 'MultiLineComment@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedPos0 = pos; if (input.substr(pos, 2) === "/*") { var result1 = "/*"; pos += 2; } else { var result1 = null; if (reportMatchFailures) { matchFailed("\"/*\""); } } if (result1 !== null) { var result2 = []; var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos, 2) === "*/") { var result7 = "*/"; pos += 2; } else { var result7 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } reportMatchFailures = savedReportMatchFailuresVar0; if (result7 === null) { var result5 = ''; } else { var result5 = null; pos = savedPos2; } if (result5 !== null) { var result6 = parse_SourceCharacter(); if (result6 !== null) { var result4 = [result5, result6]; } else { var result4 = null; pos = savedPos1; } } else { var result4 = null; pos = savedPos1; } while (result4 !== null) { result2.push(result4); var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos, 2) === "*/") { var result7 = "*/"; pos += 2; } else { var result7 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } reportMatchFailures = savedReportMatchFailuresVar0; if (result7 === null) { var result5 = ''; } else { var result5 = null; pos = savedPos2; } if (result5 !== null) { var result6 = parse_SourceCharacter(); if (result6 !== null) { var result4 = [result5, result6]; } else { var result4 = null; pos = savedPos1; } } else { var result4 = null; pos = savedPos1; } } if (result2 !== null) { if (input.substr(pos, 2) === "*/") { var result3 = "*/"; pos += 2; } else { var result3 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } if (result3 !== null) { var result0 = [result1, result2, result3]; } else { var result0 = null; pos = savedPos0; } } else { var result0 = null; pos = savedPos0; } } else { var result0 = null; pos = savedPos0; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_MultiLineCommentNoLineTerminator() { var cacheKey = 'MultiLineCommentNoLineTerminator@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedPos0 = pos; if (input.substr(pos, 2) === "/*") { var result1 = "/*"; pos += 2; } else { var result1 = null; if (reportMatchFailures) { matchFailed("\"/*\""); } } if (result1 !== null) { var result2 = []; var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos, 2) === "*/") { var result9 = "*/"; pos += 2; } else { var result9 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } if (result9 !== null) { var result7 = result9; } else { var result8 = parse_LineTerminator(); if (result8 !== null) { var result7 = result8; } else { var result7 = null;; }; } reportMatchFailures = savedReportMatchFailuresVar0; if (result7 === null) { var result5 = ''; } else { var result5 = null; pos = savedPos2; } if (result5 !== null) { var result6 = parse_SourceCharacter(); if (result6 !== null) { var result4 = [result5, result6]; } else { var result4 = null; pos = savedPos1; } } else { var result4 = null; pos = savedPos1; } while (result4 !== null) { result2.push(result4); var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; if (input.substr(pos, 2) === "*/") { var result9 = "*/"; pos += 2; } else { var result9 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } if (result9 !== null) { var result7 = result9; } else { var result8 = parse_LineTerminator(); if (result8 !== null) { var result7 = result8; } else { var result7 = null;; }; } reportMatchFailures = savedReportMatchFailuresVar0; if (result7 === null) { var result5 = ''; } else { var result5 = null; pos = savedPos2; } if (result5 !== null) { var result6 = parse_SourceCharacter(); if (result6 !== null) { var result4 = [result5, result6]; } else { var result4 = null; pos = savedPos1; } } else { var result4 = null; pos = savedPos1; } } if (result2 !== null) { if (input.substr(pos, 2) === "*/") { var result3 = "*/"; pos += 2; } else { var result3 = null; if (reportMatchFailures) { matchFailed("\"*/\""); } } if (result3 !== null) { var result0 = [result1, result2, result3]; } else { var result0 = null; pos = savedPos0; } } else { var result0 = null; pos = savedPos0; } } else { var result0 = null; pos = savedPos0; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_SingleLineComment() { var cacheKey = 'SingleLineComment@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedPos0 = pos; if (input.substr(pos, 2) === "//") { var result1 = "//"; pos += 2; } else { var result1 = null; if (reportMatchFailures) { matchFailed("\"//\""); } } if (result1 !== null) { var result2 = []; var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; var result6 = parse_LineTerminator(); reportMatchFailures = savedReportMatchFailuresVar0; if (result6 === null) { var result4 = ''; } else { var result4 = null; pos = savedPos2; } if (result4 !== null) { var result5 = parse_SourceCharacter(); if (result5 !== null) { var result3 = [result4, result5]; } else { var result3 = null; pos = savedPos1; } } else { var result3 = null; pos = savedPos1; } while (result3 !== null) { result2.push(result3); var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; var result6 = parse_LineTerminator(); reportMatchFailures = savedReportMatchFailuresVar0; if (result6 === null) { var result4 = ''; } else { var result4 = null; pos = savedPos2; } if (result4 !== null) { var result5 = parse_SourceCharacter(); if (result5 !== null) { var result3 = [result4, result5]; } else { var result3 = null; pos = savedPos1; } } else { var result3 = null; pos = savedPos1; } } if (result2 !== null) { var result0 = [result1, result2]; } else { var result0 = null; pos = savedPos0; } } else { var result0 = null; pos = savedPos0; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_Identifier() { var cacheKey = 'Identifier@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedReportMatchFailures = reportMatchFailures; reportMatchFailures = false; var savedPos0 = pos; var savedPos1 = pos; var savedPos2 = pos; var savedReportMatchFailuresVar0 = reportMatchFailures; reportMatchFailures = false; var result5 = parse_ReservedWord(); reportMatchFailures = savedReportMatchFailuresVar0; if (result5 === null) { var result3 = ''; } else { var result3 = null; pos = savedPos2; } if (result3 !== null) { var result4 = parse_IdentifierName(); if (result4 !== null) { var result1 = [result3, result4]; } else { var result1 = null; pos = savedPos1; } } else { var result1 = null; pos = savedPos1; } var result2 = result1 !== null ? (function(name) { return name; })(result1[1]) : null; if (result2 !== null) { var result0 = result2; } else { var result0 = null; pos = savedPos0; } reportMatchFailures = savedReportMatchFailures; if (reportMatchFailures && result0 === null) { matchFailed("identifier"); } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_IdentifierName() { var cacheKey = 'IdentifierName@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedReportMatchFailures = reportMatchFailures; reportMatchFailures = false; var savedPos0 = pos; var savedPos1 = pos; var result3 = parse_IdentifierStart(); if (result3 !== null) { var result4 = []; var result5 = parse_IdentifierPart(); while (result5 !== null) { result4.push(result5); var result5 = parse_IdentifierPart(); } if (result4 !== null) { var result1 = [result3, result4]; } else { var result1 = null; pos = savedPos1; } } else { var result1 = null; pos = savedPos1; } var result2 = result1 !== null ? (function(start, parts) { return start + parts.join(""); })(result1[0], result1[1]) : null; if (result2 !== null) { var result0 = result2; } else { var result0 = null; pos = savedPos0; } reportMatchFailures = savedReportMatchFailures; if (reportMatchFailures && result0 === null) { matchFailed("identifier"); } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_IdentifierStart() { var cacheKey = 'IdentifierStart@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var result8 = parse_UnicodeLetter(); if (result8 !== null) { var result0 = result8; } else { if (input.substr(pos, 1) === "$") { var result7 = "$"; pos += 1; } else { var result7 = null; if (reportMatchFailures) { matchFailed("\"$\""); } } if (result7 !== null) { var result0 = result7; } else { if (input.substr(pos, 1) === "_") { var result6 = "_"; pos += 1; } else { var result6 = null; if (reportMatchFailures) { matchFailed("\"_\""); } } if (result6 !== null) { var result0 = result6; } else { var savedPos0 = pos; var savedPos1 = pos; if (input.substr(pos, 1) === "\\") { var result4 = "\\"; pos += 1; } else { var result4 = null; if (reportMatchFailures) { matchFailed("\"\\\\\""); } } if (result4 !== null) { var result5 = parse_UnicodeEscapeSequence(); if (result5 !== null) { var result2 = [result4, result5]; } else { var result2 = null; pos = savedPos1; } } else { var result2 = null; pos = savedPos1; } var result3 = result2 !== null ? (function(sequence) { return sequence; })(result2[1]) : null; if (result3 !== null) { var result1 = result3; } else { var result1 = null; pos = savedPos0; } if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; }; }; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_IdentifierPart() { var cacheKey = 'IdentifierPart@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var result10 = parse_IdentifierStart(); if (result10 !== null) { var result0 = result10; } else { var result9 = parse_UnicodeCombiningMark(); if (result9 !== null) { var result0 = result9; } else { var result8 = parse_Nd(); if (result8 !== null) { var result0 = result8; } else { var result7 = parse_Pc(); if (result7 !== null) { var result0 = result7; } else { var savedPos1 = pos; if (input.substr(pos, 1) === "\u200C") { var result5 = "\u200C"; pos += 1; } else { var result5 = null; if (reportMatchFailures) { matchFailed("\"\\u200C\""); } } var result6 = result5 !== null ? (function() { return "\u200C"; })() : null; if (result6 !== null) { var result4 = result6; } else { var result4 = null; pos = savedPos1; } if (result4 !== null) { var result0 = result4; } else { var savedPos0 = pos; if (input.substr(pos, 1) === "\u200D") { var result2 = "\u200D"; pos += 1; } else { var result2 = null; if (reportMatchFailures) { matchFailed("\"\\u200D\""); } } var result3 = result2 !== null ? (function() { return "\u200D"; })() : null; if (result3 !== null) { var result1 = result3; } else { var result1 = null; pos = savedPos0; } if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; }; }; }; }; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_UnicodeLetter() { var cacheKey = 'UnicodeLetter@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var result6 = parse_Lu(); if (result6 !== null) { var result0 = result6; } else { var result5 = parse_Ll(); if (result5 !== null) { var result0 = result5; } else { var result4 = parse_Lt(); if (result4 !== null) { var result0 = result4; } else { var result3 = parse_Lm(); if (result3 !== null) { var result0 = result3; } else { var result2 = parse_Lo(); if (result2 !== null) { var result0 = result2; } else { var result1 = parse_Nl(); if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; }; }; }; }; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_UnicodeCombiningMark() { var cacheKey = 'UnicodeCombiningMark@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var result2 = parse_Mn(); if (result2 !== null) { var result0 = result2; } else { var result1 = parse_Mc(); if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_ReservedWord() { var cacheKey = 'ReservedWord@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var result4 = parse_Keyword(); if (result4 !== null) { var result0 = result4; } else { var result3 = parse_FutureReservedWord(); if (result3 !== null) { var result0 = result3; } else { var result2 = parse_NullLiteral(); if (result2 !== null) { var result0 = result2; } else { var result1 = parse_BooleanLiteral(); if (result1 !== null) { var result0 = result1; } else { var result0 = null;; }; }; }; } cache[cacheKey] = { nextPos: pos, result: result0 }; return result0; } function parse_Keyword() { var cacheKey = 'Keyword@' + pos; var cachedResult = cache[cacheKey]; if (cachedResult) { pos = cachedResult.nextPos; return cachedResult.result; } var savedPos0 = pos; if (input.substr(pos, 5) === "break") { var result29 = "break"; pos += 5; } else { var result29 = null; if (reportMatchFailures) { matchFailed("\"break\""); } } if (result29 !== null) { var result1 = result29; } else { if (input.substr(pos, 4) === "case") { var result28 = "case"; pos += 4; } else { var result28 = null; if (reportMatchFailures) { matchFailed("\"case\""); } } if (result28 !== null) { var result1 = result28; } else { if (input.substr(pos, 5) === "catch") { var result27 = "catch"; pos += 5; } else { var result27 = null; if (reportMatchFailures) { matchFailed("\"catch\""); } } if (result27 !== null) { var result1 = result27; } else { if (input.substr(pos, 8) === "continue") { var result26 = "continue"; pos += 8; } else { var result26 = null; if (reportMatchFailures) { matchFailed("\"continue\""); } } if (result26 !== null) { var result1 = result26; } else { if (input.substr(pos, 8) === "debugger") { var result25 = "debugger"; pos += 8; } else { var result25 = null; if (reportMatchFailures) { matchFailed("\"debugger\""); } } if (result25 !== null) { var result1 = result25; } else { if (input.substr(pos, 7) === "default") { var result24 = "default"; pos += 7; } else { var result24 = null; if (reportMatchFailures) { matchFailed("\"default\""); } } if (result24 !== null) { var result1 = result24; } else { if (input.substr(pos, 6) === "delete") { var result23 = "delete"; pos += 6; } else { var result23 = null; if (reportMatchFailures) { matchFailed("\"delete\""); } } if (result23 !== null) { var result1 = result23; } else { if (input.substr(pos, 2) === "do") { var result22 = "do"; pos += 2; } else { var result22 = null; if (reportMatchFailures) { matchFailed("\"do\""); } } if (result22 !== null) { var result1 = result22; } else { if (input.substr(pos, 4) === "else") { var result21 = "else"; pos += 4; } else { var result21 = null; if (reportMatchFailures) { matchFailed("\"else\""); } } if (result21 !== null) { var result1 = result21; } else { if (input.substr(pos, 7) === "finally") { var result20 = "finally"; pos += 7; } else { var result20 = null; if (reportMatchFailures) { matchFailed("\"finally\""); } } if (result20 !== null) { var result1 = result20; } else { if (input.substr(pos, 3) === "for") { var result19 = "for"; pos += 3; } else { var result19 = null; if (reportMatchFailures) { matchFailed("\"for\""); } } if (result19 !== null) { var result1 = result19; } else { if (input.substr(pos, 8) === "function") { var result18 = "function"; pos += 8; } else { var result18 = null; if (reportMatchFailures) { matchFailed("\"function\""); } } if (result18 !== null) { var result1 = result18; } else { if (input.substr(pos, 2) === "if") { var result17 = "if"; pos += 2; } else { var result17 = null; if (reportMatchFailures) { matchFailed("\"if\""); } } if (result17 !== null) { var result1 = result17; } else { if (input.substr(pos, 10) === "instanceof") { var result16 = "instanceof"; pos += 10; } else { var result16 = null; if (reportMatchFailures) { matchFailed("\"instanceof\""); } } if (result16 !== null) { var result1 = result16; } else { if (input.substr(pos, 2) === "in") { var result15 = "in"; pos += 2; } else { var result15 = null; if (reportMatchFailures) { matchFailed("\"in\""); } } if (result15 !== null) { var result1 = result15; } else { if (input.substr(pos, 3) === "new") { var result14 = "new"; pos += 3;