diff --git a/lib/compiler.js b/lib/compiler.js index 0e01445..52d860d 100644 --- a/lib/compiler.js +++ b/lib/compiler.js @@ -465,7 +465,7 @@ PEG.Compiler = { ); var reportMatchFailureCode = PEG.Compiler.formatCode( "if (context.reportMatchFailures && ${resultVar} === null) {", - " this._matchFailed(${displayName|string});", + " matchFailed(${displayName|string});", "}", { displayName: node.displayName, @@ -479,27 +479,25 @@ PEG.Compiler = { } return PEG.Compiler.formatCode( - "_parse_${name}: function(context) {", - " var cacheKey = ${name|string} + '@' + this._pos;", - " var cachedResult = this._cache[cacheKey];", + "function parse_${name}(context) {", + " var cacheKey = ${name|string} + '@' + pos;", + " var cachedResult = cache[cacheKey];", " if (cachedResult) {", - " this._pos = cachedResult.nextPos;", + " pos = cachedResult.nextPos;", " return cachedResult.result;", " }", " ", - " var pos = this._pos;", - " ", " ${setReportMatchFailuresCode}", " ${code}", " ${restoreReportMatchFailuresCode}", " ${reportMatchFailureCode}", " ", - " this._cache[cacheKey] = {", - " nextPos: this._pos,", + " cache[cacheKey] = {", + " nextPos: pos,", " result: ${resultVar}", " };", " return ${resultVar};", - "},", + "}", { name: node.name, setReportMatchFailuresCode: setReportMatchFailuresCode, @@ -516,16 +514,15 @@ PEG.Compiler = { * is as follows: * * * The code fragment should try to match a part of the input starting with - * the position indicated in |this._pos|. That position may point past the - * end of the input. + * the position indicated in |pos|. That position may point past the end of + * the input. * - * * If the code fragment matches the input, it advances |this._pos| after - * the matched part of the input and sets variable with a name stored in + * * If the code fragment matches the input, it advances |pos| after the + * matched part of the input and sets variable with a name stored in * |resultVar| to appropriate value, which is always non-null. * - * * If the code fragment does not match the input, it does not change - * |this._pos| and it sets a variable with a name stored in |resultVar| to - * |null|. + * * If the code fragment does not match the input, it does not change |pos| + * and it sets a variable with a name stored in |resultVar| to |null|. */ choice: function(node, resultVar) { @@ -577,7 +574,7 @@ PEG.Compiler = { " ${code}", "} else {", " var ${resultVar} = null;", - " this._pos = ${savedPosVar};", + " pos = ${savedPosVar};", "}", { elementCode: PEG.Compiler.compileNode(node.elements[i], elementResultVars[i]), @@ -590,7 +587,7 @@ PEG.Compiler = { } return PEG.Compiler.formatCode( - "var ${savedPosVar} = this._pos;", + "var ${savedPosVar} = pos;", "${code}", { code: code, @@ -609,14 +606,14 @@ PEG.Compiler = { var expressionResultVar = PEG.Compiler.generateUniqueIdentifier("result"); return PEG.Compiler.formatCode( - "var ${savedPosVar} = this._pos;", + "var ${savedPosVar} = pos;", "var ${savedReportMatchFailuresVar} = context.reportMatchFailures;", "context.reportMatchFailures = false;", "${expressionCode}", "context.reportMatchFailures = ${savedReportMatchFailuresVar};", "if (${expressionResultVar} !== null) {", " var ${resultVar} = '';", - " this._pos = ${savedPosVar};", + " pos = ${savedPosVar};", "} else {", " var ${resultVar} = null;", "}", @@ -636,7 +633,7 @@ PEG.Compiler = { var expressionResultVar = PEG.Compiler.generateUniqueIdentifier("result"); return PEG.Compiler.formatCode( - "var ${savedPosVar} = this._pos;", + "var ${savedPosVar} = pos;", "var ${savedReportMatchFailuresVar} = context.reportMatchFailures;", "context.reportMatchFailures = false;", "${expressionCode}", @@ -645,7 +642,7 @@ PEG.Compiler = { " var ${resultVar} = '';", "} else {", " var ${resultVar} = null;", - " this._pos = ${savedPosVar};", + " pos = ${savedPosVar};", "}", { expressionCode: PEG.Compiler.compileNode(node.expression, expressionResultVar), @@ -761,9 +758,9 @@ PEG.Compiler = { rule_ref: function(node, resultVar) { return PEG.Compiler.formatCode( - "var ${resultVar} = this.${ruleMethod}(context);", + "var ${resultVar} = ${ruleMethod}(context);", { - ruleMethod: "_parse_" + node.name, + ruleMethod: "parse_" + node.name, resultVar: resultVar } ); @@ -771,13 +768,13 @@ PEG.Compiler = { literal: function(node, resultVar) { return PEG.Compiler.formatCode( - "if (this._input.substr(this._pos, ${length}) === ${value|string}) {", + "if (input.substr(pos, ${length}) === ${value|string}) {", " var ${resultVar} = ${value|string};", - " this._pos += ${length};", + " pos += ${length};", "} else {", " var ${resultVar} = null;", " if (context.reportMatchFailures) {", - " this._matchFailed(this._quoteString(${value|string}));", + " matchFailed(quoteString(${value|string}));", " }", "}", { @@ -790,13 +787,13 @@ PEG.Compiler = { any: function(node, resultVar) { return PEG.Compiler.formatCode( - "if (this._input.length > this._pos) {", - " var ${resultVar} = this._input.charAt(this._pos);", - " this._pos++;", + "if (input.length > pos) {", + " var ${resultVar} = input.charAt(pos);", + " pos++;", "} else {", " var ${resultVar} = null;", " if (context.reportMatchFailures) {", - " this._matchFailed('any character');", + " matchFailed('any character');", " }", "}", { resultVar: resultVar } @@ -824,13 +821,13 @@ PEG.Compiler = { } return PEG.Compiler.formatCode( - "if (this._input.substr(this._pos).match(${regexp}) !== null) {", - " var ${resultVar} = this._input.charAt(this._pos);", - " this._pos++;", + "if (input.substr(pos).match(${regexp}) !== null) {", + " var ${resultVar} = input.charAt(pos);", + " pos++;", "} else {", " var ${resultVar} = null;", " if (context.reportMatchFailures) {", - " this._matchFailed(${rawText|string});", + " matchFailed(${rawText|string});", " }", "}", { @@ -884,56 +881,6 @@ PEG.Compiler = { " /* Generated by PEG.js (http://pegjs.majda.cz/). */", " ", " var result = {", - /* This needs to be in sync with PEG.StringUtils.quote. */ - " _quoteString: function(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(/\\u2028/g, '\\\\u2028') // line separator", - " .replace(/\\u2029/g, '\\\\u2029') // paragraph separator", - " .replace(/\\n/g, '\\\\n') // line feed", - " + '\"';", - " },", - " ", - /* This needs to be in sync with PEG.ArrayUtils.contains. */ - " _arrayContains: function(array, value) {", - " /*", - " * Stupid IE does not have Array.prototype.indexOf, otherwise this function", - " * would be a one-liner.", - " */", - " var length = array.length;", - " for (var i = 0; i < length; i++) {", - " if (array[i] === value) {", - " return true;", - " }", - " }", - " return false;", - " },", - " ", - " _matchFailed: function(failure) {", - " if (this._pos < this._rightmostMatchFailuresPos) {", - " return;", - " }", - " ", - " if (this._pos > this._rightmostMatchFailuresPos) {", - " this._rightmostMatchFailuresPos = this._pos;", - " this._rightmostMatchFailuresExpected = [];", - " }", - " ", - " if (!this._arrayContains(this._rightmostMatchFailuresExpected, failure)) {", - " this._rightmostMatchFailuresExpected.push(failure);", - " }", - " },", - " ", - " ${parseFunctionDefinitions}", - " ", " /*", " * Parses the input with a generated parser. If the parsing is successfull,", " * returns a value explicitly or implicitly specified by the grammar from", @@ -941,16 +888,61 @@ PEG.Compiler = { " * unsuccessful, throws |PEG.grammarParser.SyntaxError| describing the error.", " */", " parse: function(input) {", - " var that = this;", + " var pos = 0;", + " var rightmostMatchFailuresPos = 0;", + " var rightmostMatchFailuresExpected = [];", + " var cache = {};", + " ", + /* This needs to be in sync with PEG.StringUtils.quote. */ + " function quoteString(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(/\\u2028/g, '\\\\u2028') // line separator", + " .replace(/\\u2029/g, '\\\\u2029') // paragraph separator", + " .replace(/\\n/g, '\\\\n') // line feed", + " + '\"';", + " }", + " ", + /* This needs to be in sync with PEG.ArrayUtils.contains. */ + " function arrayContains(array, value) {", + " /*", + " * Stupid IE does not have Array.prototype.indexOf, otherwise this", + " * function would be a one-liner.", + " */", + " var length = array.length;", + " for (var i = 0; i < length; i++) {", + " if (array[i] === value) {", + " return true;", + " }", + " }", + " return false;", + " }", " ", - " function initialize() {", - " that._input = input;", - " that._pos = 0;", - " that._rightmostMatchFailuresPos = 0;", - " that._rightmostMatchFailuresExpected = [];", - " that._cache = {};", + " function matchFailed(failure) {", + " if (pos < rightmostMatchFailuresPos) {", + " return;", + " }", + " ", + " if (pos > rightmostMatchFailuresPos) {", + " rightmostMatchFailuresPos = pos;", + " rightmostMatchFailuresExpected = [];", + " }", + " ", + " if (!arrayContains(rightmostMatchFailuresExpected, failure)) {", + " rightmostMatchFailuresExpected.push(failure);", + " }", " }", " ", + " ${parseFunctionDefinitions}", + " ", " function buildErrorMessage() {", " function buildExpected(failuresExpected) {", " switch (failuresExpected.length) {", @@ -966,10 +958,10 @@ PEG.Compiler = { " }", " }", " ", - " var expected = buildExpected(that._rightmostMatchFailuresExpected);", - " var pos = Math.max(that._pos, that._rightmostMatchFailuresPos);", - " var actual = pos < that._input.length", - " ? that._quoteString(that._input.charAt(pos))", + " var expected = buildExpected(rightmostMatchFailuresExpected);", + " var actualPos = Math.max(pos, rightmostMatchFailuresPos);", + " var actual = actualPos < input.length", + " ? quoteString(input.charAt(actualPos))", " : 'end of input';", " ", " return 'Expected ' + expected + ' but ' + actual + ' found.';", @@ -983,13 +975,11 @@ PEG.Compiler = { " * enough to prevent it.", " */", " ", - " var input = that._input;", - " var pos = that._rightmostMatchFailuresPos;", " var line = 1;", " var column = 1;", " var seenCR = false;", " ", - " for (var i = 0; i < pos; i++) {", + " for (var i = 0; i < rightmostMatchFailuresPos; i++) {", " var ch = input.charAt(i);", " if (ch === '\\n') {", " if (!seenCR) { line++; }", @@ -1008,13 +998,11 @@ PEG.Compiler = { " return { line: line, column: column };", " }", " ", - " initialize();", - " ", " var initialContext = {", " reportMatchFailures: true", " };", " ", - " var result = this._parse_${startRule}(initialContext);", + " var result = parse_${startRule}(initialContext);", " ", " /*", " * The parser is now in one of the following three states:", @@ -1022,27 +1010,28 @@ PEG.Compiler = { " * 1. The parser successfully parsed the whole input.", " *", " * - |result !== null|", - " * - |that._pos === input.length|", - " * - |that._rightmostMatchFailuresExpected.length| may or may not contain", + " * - |pos === input.length|", + " * - |rightmostMatchFailuresExpected.length| may or may not contain", " * something", " *", " * 2. The parser successfully parsed only a part of the input.", " *", " * - |result !== null|", - " * - |that._pos < input.length|", - " * - |that._rightmostMatchFailuresExpected.length| may or may not contain", + " * - |pos < input.length|", + " * - |rightmostMatchFailuresExpected.length| may or may not contain", " * something", " *", " * 3. The parser did not successfully parse any part of the input.", " *", " * - |result === null|", - " * - |that._pos === 0|", - " * - |that._rightmostMatchFailuresExpected.length| contains at least one failure", + " * - |pos === 0|", + " * - |rightmostMatchFailuresExpected.length| contains at least one", + " * failure", " *", " * All code following this comment (including called functions) must", " * handle these states.", " */", - " if (result === null || this._pos !== input.length) {", + " if (result === null || pos !== input.length) {", " var errorPosition = computeErrorPosition();", " throw new this.SyntaxError(", " buildErrorMessage(),", diff --git a/lib/metagrammar.js b/lib/metagrammar.js index cf1c018..e81e0e6 100644 --- a/lib/metagrammar.js +++ b/lib/metagrammar.js @@ -2,1590 +2,1513 @@ PEG.grammarParser = (function(){ /* Generated by PEG.js (http://pegjs.majda.cz/). */ var result = { - _quoteString: function(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(/\u2028/g, '\\u2028') // line separator - .replace(/\u2029/g, '\\u2029') // paragraph separator - .replace(/\n/g, '\\n') // line feed - + '"'; - }, - - _arrayContains: function(array, value) { - /* - * Stupid IE does not have Array.prototype.indexOf, otherwise this function - * would be a one-liner. - */ - var length = array.length; - for (var i = 0; i < length; i++) { - if (array[i] === value) { - return true; - } - } - return false; - }, - - _matchFailed: function(failure) { - if (this._pos < this._rightmostMatchFailuresPos) { - return; - } - - if (this._pos > this._rightmostMatchFailuresPos) { - this._rightmostMatchFailuresPos = this._pos; - this._rightmostMatchFailuresExpected = []; - } + /* + * 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.grammarParser.SyntaxError| describing the error. + */ + parse: function(input) { + var pos = 0; + var rightmostMatchFailuresPos = 0; + var rightmostMatchFailuresExpected = []; + var cache = {}; - if (!this._arrayContains(this._rightmostMatchFailuresExpected, failure)) { - this._rightmostMatchFailuresExpected.push(failure); - } - }, - - _parse_grammar: function(context) { - var cacheKey = "grammar" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function quoteString(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(/\u2028/g, '\\u2028') // line separator + .replace(/\u2029/g, '\\u2029') // paragraph separator + .replace(/\n/g, '\\n') // line feed + + '"'; } - var pos = this._pos; - - - var savedPos0 = this._pos; - var result2 = this._parse___(context); - if (result2 !== null) { - var result4 = this._parse_rule(context); - if (result4 !== null) { - var result3 = []; - while (result4 !== null) { - result3.push(result4); - var result4 = this._parse_rule(context); + function arrayContains(array, value) { + /* + * Stupid IE does not have Array.prototype.indexOf, otherwise this + * function would be a one-liner. + */ + var length = array.length; + for (var i = 0; i < length; i++) { + if (array[i] === value) { + return true; } - } else { - var result3 = null; - } - if (result3 !== null) { - var result1 = [result2, result3]; - } else { - var result1 = null; - this._pos = savedPos0; } - } else { - var result1 = null; - this._pos = savedPos0; + return false; } - var result0 = result1 !== null - ? (function(rules) { - var result = {}; - PEG.ArrayUtils.each(rules, function(rule) { result[rule.name] = rule; }); - return result; - })(result1[1]) - : null; - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result0 - }; - return result0; - }, - - _parse_rule: function(context) { - var cacheKey = "rule" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function matchFailed(failure) { + if (pos < rightmostMatchFailuresPos) { + return; + } + + if (pos > rightmostMatchFailuresPos) { + rightmostMatchFailuresPos = pos; + rightmostMatchFailuresExpected = []; + } + + if (!arrayContains(rightmostMatchFailuresExpected, failure)) { + rightmostMatchFailuresExpected.push(failure); + } } - var pos = this._pos; - - - var savedPos1 = this._pos; - var result7 = this._parse_identifier(context); - if (result7 !== null) { - var result14 = this._parse_literal(context); - if (result14 !== null) { - var result8 = result14; - } else { - if (this._input.substr(this._pos, 0) === "") { - var result13 = ""; - this._pos += 0; - } else { - var result13 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("")); + function parse_grammar(context) { + var cacheKey = "grammar" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var result2 = parse___(context); + if (result2 !== null) { + var result4 = parse_rule(context); + if (result4 !== null) { + var result3 = []; + while (result4 !== null) { + result3.push(result4); + var result4 = parse_rule(context); } + } else { + var result3 = null; } - if (result13 !== null) { - var result8 = result13; + if (result3 !== null) { + var result1 = [result2, result3]; } else { - var result8 = null;; - }; + var result1 = null; + pos = savedPos0; + } + } else { + var result1 = null; + pos = savedPos0; + } + var result0 = result1 !== null + ? (function(rules) { + var result = {}; + PEG.ArrayUtils.each(rules, function(rule) { result[rule.name] = rule; }); + return result; + })(result1[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rule(context) { + var cacheKey = "rule" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - if (result8 !== null) { - var result9 = this._parse_equals(context); - if (result9 !== null) { - var result10 = this._parse_choice(context); - if (result10 !== null) { - var result12 = this._parse_semicolon(context); - var result11 = result12 !== null ? result12 : ''; - if (result11 !== null) { - var result6 = [result7, result8, result9, result10, result11]; + + + var savedPos1 = pos; + var result7 = parse_identifier(context); + if (result7 !== null) { + var result14 = parse_literal(context); + if (result14 !== null) { + var result8 = result14; + } else { + if (input.substr(pos, 0) === "") { + var result13 = ""; + pos += 0; + } else { + var result13 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("")); + } + } + if (result13 !== null) { + var result8 = result13; + } else { + var result8 = null;; + }; + } + if (result8 !== null) { + var result9 = parse_equals(context); + if (result9 !== null) { + var result10 = parse_choice(context); + if (result10 !== null) { + var result12 = parse_semicolon(context); + var result11 = result12 !== null ? result12 : ''; + if (result11 !== null) { + var result6 = [result7, result8, result9, result10, result11]; + } else { + var result6 = null; + pos = savedPos1; + } } else { var result6 = null; - this._pos = savedPos1; + pos = savedPos1; } } else { var result6 = null; - this._pos = savedPos1; + pos = savedPos1; } } else { var result6 = null; - this._pos = savedPos1; + pos = savedPos1; } } else { var result6 = null; - this._pos = savedPos1; + pos = savedPos1; } - } else { - var result6 = null; - this._pos = savedPos1; - } - var result5 = result6 !== null - ? (function(name, displayName, expression) { - return { - type: "rule", - name: name, - displayName: displayName !== "" ? displayName : null, - expression: expression - }; - })(result6[0], result6[1], result6[3]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result5 - }; - return result5; - }, - - _parse_choice: function(context) { - var cacheKey = "choice" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result5 = result6 !== null + ? (function(name, displayName, expression) { + return { + type: "rule", + name: name, + displayName: displayName !== "" ? displayName : null, + expression: expression + }; + })(result6[0], result6[1], result6[3]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result5 + }; + return result5; } - var pos = this._pos; - - - var savedPos2 = this._pos; - var result17 = this._parse_sequence(context); - if (result17 !== null) { - var result18 = []; - var savedPos3 = this._pos; - var result20 = this._parse_slash(context); - if (result20 !== null) { - var result21 = this._parse_sequence(context); - if (result21 !== null) { - var result19 = [result20, result21]; - } else { - var result19 = null; - this._pos = savedPos3; - } - } else { - var result19 = null; - this._pos = savedPos3; + function parse_choice(context) { + var cacheKey = "choice" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - while (result19 !== null) { - result18.push(result19); - var savedPos3 = this._pos; - var result20 = this._parse_slash(context); + + + var savedPos2 = pos; + var result17 = parse_sequence(context); + if (result17 !== null) { + var result18 = []; + var savedPos3 = pos; + var result20 = parse_slash(context); if (result20 !== null) { - var result21 = this._parse_sequence(context); + var result21 = parse_sequence(context); if (result21 !== null) { var result19 = [result20, result21]; } else { var result19 = null; - this._pos = savedPos3; + pos = savedPos3; } } else { var result19 = null; - this._pos = savedPos3; + pos = savedPos3; + } + while (result19 !== null) { + result18.push(result19); + var savedPos3 = pos; + var result20 = parse_slash(context); + if (result20 !== null) { + var result21 = parse_sequence(context); + if (result21 !== null) { + var result19 = [result20, result21]; + } else { + var result19 = null; + pos = savedPos3; + } + } else { + var result19 = null; + pos = savedPos3; + } + } + if (result18 !== null) { + var result16 = [result17, result18]; + } else { + var result16 = null; + pos = savedPos2; } - } - if (result18 !== null) { - var result16 = [result17, result18]; } else { var result16 = null; - this._pos = savedPos2; - } - } else { - var result16 = null; - this._pos = savedPos2; - } - var result15 = result16 !== null - ? (function(head, tail) { - if (tail.length > 0) { - var alternatives = [head].concat(PEG.ArrayUtils.map( - tail, - function(element) { return element[1]; } - )); - return { - type: "choice", - alternatives: alternatives + pos = savedPos2; + } + var result15 = result16 !== null + ? (function(head, tail) { + if (tail.length > 0) { + var alternatives = [head].concat(PEG.ArrayUtils.map( + tail, + function(element) { return element[1]; } + )); + return { + type: "choice", + alternatives: alternatives + } + } else { + return head; } - } else { - return head; - } - })(result16[0], result16[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result15 - }; - return result15; - }, - - _parse_sequence: function(context) { - var cacheKey = "sequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + })(result16[0], result16[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result15 + }; + return result15; } - var pos = this._pos; - - - var savedPos4 = this._pos; - var result28 = []; - var result30 = this._parse_labeled(context); - while (result30 !== null) { - result28.push(result30); - var result30 = this._parse_labeled(context); - } - if (result28 !== null) { - var result29 = this._parse_action(context); - if (result29 !== null) { - var result27 = [result28, result29]; + function parse_sequence(context) { + var cacheKey = "sequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos4 = pos; + var result28 = []; + var result30 = parse_labeled(context); + while (result30 !== null) { + result28.push(result30); + var result30 = parse_labeled(context); + } + if (result28 !== null) { + var result29 = parse_action(context); + if (result29 !== null) { + var result27 = [result28, result29]; + } else { + var result27 = null; + pos = savedPos4; + } } else { var result27 = null; - this._pos = savedPos4; + pos = savedPos4; } - } else { - var result27 = null; - this._pos = savedPos4; - } - var result26 = result27 !== null - ? (function(elements, action) { - var expression = elements.length != 1 - ? { - type: "sequence", - elements: elements - } - : elements[0]; - return { - type: "action", - expression: expression, - action: action - }; - })(result27[0], result27[1]) - : null; - if (result26 !== null) { - var result22 = result26; - } else { - var result24 = []; - var result25 = this._parse_labeled(context); - while (result25 !== null) { - result24.push(result25); - var result25 = this._parse_labeled(context); - } - var result23 = result24 !== null - ? (function(elements) { - return elements.length != 1 + var result26 = result27 !== null + ? (function(elements, action) { + var expression = elements.length != 1 ? { type: "sequence", elements: elements } : elements[0]; - })(result24) + return { + type: "action", + expression: expression, + action: action + }; + })(result27[0], result27[1]) : null; - if (result23 !== null) { - var result22 = result23; - } else { - var result22 = null;; - }; - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result22 - }; - return result22; - }, - - _parse_labeled: function(context) { - var cacheKey = "labeled" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos5 = this._pos; - var result35 = this._parse_identifier(context); - if (result35 !== null) { - var result36 = this._parse_colon(context); - if (result36 !== null) { - var result37 = this._parse_prefixed(context); - if (result37 !== null) { - var result34 = [result35, result36, result37]; - } else { - var result34 = null; - this._pos = savedPos5; + if (result26 !== null) { + var result22 = result26; + } else { + var result24 = []; + var result25 = parse_labeled(context); + while (result25 !== null) { + result24.push(result25); + var result25 = parse_labeled(context); } - } else { - var result34 = null; - this._pos = savedPos5; + var result23 = result24 !== null + ? (function(elements) { + return elements.length != 1 + ? { + type: "sequence", + elements: elements + } + : elements[0]; + })(result24) + : null; + if (result23 !== null) { + var result22 = result23; + } else { + var result22 = null;; + }; } - } else { - var result34 = null; - this._pos = savedPos5; - } - var result33 = result34 !== null - ? (function(label, expression) { - return { - type: "labeled", - label: label, - expression: expression - }; - })(result34[0], result34[2]) - : null; - if (result33 !== null) { - var result31 = result33; - } else { - var result32 = this._parse_prefixed(context); - if (result32 !== null) { - var result31 = result32; - } else { - var result31 = null;; + + + + cache[cacheKey] = { + nextPos: pos, + result: result22 }; + return result22; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result31 - }; - return result31; - }, - - _parse_prefixed: function(context) { - var cacheKey = "prefixed" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos7 = this._pos; - var result46 = this._parse_and(context); - if (result46 !== null) { - var result47 = this._parse_suffixed(context); - if (result47 !== null) { - var result45 = [result46, result47]; - } else { - var result45 = null; - this._pos = savedPos7; + function parse_labeled(context) { + var cacheKey = "labeled" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } else { - var result45 = null; - this._pos = savedPos7; - } - var result44 = result45 !== null - ? (function(expression) { - return { - type: "and_predicate", - expression: expression - }; - })(result45[1]) - : null; - if (result44 !== null) { - var result38 = result44; - } else { - var savedPos6 = this._pos; - var result42 = this._parse_not(context); - if (result42 !== null) { - var result43 = this._parse_suffixed(context); - if (result43 !== null) { - var result41 = [result42, result43]; + + + var savedPos5 = pos; + var result35 = parse_identifier(context); + if (result35 !== null) { + var result36 = parse_colon(context); + if (result36 !== null) { + var result37 = parse_prefixed(context); + if (result37 !== null) { + var result34 = [result35, result36, result37]; + } else { + var result34 = null; + pos = savedPos5; + } } else { - var result41 = null; - this._pos = savedPos6; + var result34 = null; + pos = savedPos5; } } else { - var result41 = null; - this._pos = savedPos6; + var result34 = null; + pos = savedPos5; } - var result40 = result41 !== null - ? (function(expression) { + var result33 = result34 !== null + ? (function(label, expression) { return { - type: "not_predicate", + type: "labeled", + label: label, expression: expression }; - })(result41[1]) + })(result34[0], result34[2]) : null; - if (result40 !== null) { - var result38 = result40; + if (result33 !== null) { + var result31 = result33; } else { - var result39 = this._parse_suffixed(context); - if (result39 !== null) { - var result38 = result39; + var result32 = parse_prefixed(context); + if (result32 !== null) { + var result31 = result32; } else { - var result38 = null;; + var result31 = null;; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result31 }; + return result31; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result38 - }; - return result38; - }, - - _parse_suffixed: function(context) { - var cacheKey = "suffixed" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos10 = this._pos; - var result60 = this._parse_primary(context); - if (result60 !== null) { - var result61 = this._parse_question(context); - if (result61 !== null) { - var result59 = [result60, result61]; - } else { - var result59 = null; - this._pos = savedPos10; + function parse_prefixed(context) { + var cacheKey = "prefixed" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } else { - var result59 = null; - this._pos = savedPos10; - } - var result58 = result59 !== null - ? (function(expression) { - return { - type: "optional", - expression: expression - }; - })(result59[0]) - : null; - if (result58 !== null) { - var result48 = result58; - } else { - var savedPos9 = this._pos; - var result56 = this._parse_primary(context); - if (result56 !== null) { - var result57 = this._parse_star(context); - if (result57 !== null) { - var result55 = [result56, result57]; + + + var savedPos7 = pos; + var result46 = parse_and(context); + if (result46 !== null) { + var result47 = parse_suffixed(context); + if (result47 !== null) { + var result45 = [result46, result47]; } else { - var result55 = null; - this._pos = savedPos9; + var result45 = null; + pos = savedPos7; } } else { - var result55 = null; - this._pos = savedPos9; + var result45 = null; + pos = savedPos7; } - var result54 = result55 !== null + var result44 = result45 !== null ? (function(expression) { return { - type: "zero_or_more", + type: "and_predicate", expression: expression }; - })(result55[0]) + })(result45[1]) : null; - if (result54 !== null) { - var result48 = result54; - } else { - var savedPos8 = this._pos; - var result52 = this._parse_primary(context); - if (result52 !== null) { - var result53 = this._parse_plus(context); - if (result53 !== null) { - var result51 = [result52, result53]; + if (result44 !== null) { + var result38 = result44; + } else { + var savedPos6 = pos; + var result42 = parse_not(context); + if (result42 !== null) { + var result43 = parse_suffixed(context); + if (result43 !== null) { + var result41 = [result42, result43]; } else { - var result51 = null; - this._pos = savedPos8; + var result41 = null; + pos = savedPos6; } } else { - var result51 = null; - this._pos = savedPos8; + var result41 = null; + pos = savedPos6; } - var result50 = result51 !== null + var result40 = result41 !== null ? (function(expression) { return { - type: "one_or_more", + type: "not_predicate", expression: expression }; - })(result51[0]) + })(result41[1]) : null; - if (result50 !== null) { - var result48 = result50; + if (result40 !== null) { + var result38 = result40; } else { - var result49 = this._parse_primary(context); - if (result49 !== null) { - var result48 = result49; + var result39 = parse_suffixed(context); + if (result39 !== null) { + var result38 = result39; } else { - var result48 = null;; + var result38 = null;; }; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result38 }; + return result38; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result48 - }; - return result48; - }, - - _parse_primary: function(context) { - var cacheKey = "primary" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos12 = this._pos; - var result75 = this._parse_identifier(context); - if (result75 !== null) { - var savedPos13 = this._pos; - var savedReportMatchFailuresVar0 = context.reportMatchFailures; - context.reportMatchFailures = false; - var savedPos14 = this._pos; - var result81 = this._parse_literal(context); - if (result81 !== null) { - var result78 = result81; - } else { - if (this._input.substr(this._pos, 0) === "") { - var result80 = ""; - this._pos += 0; - } else { - var result80 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("")); - } - } - if (result80 !== null) { - var result78 = result80; - } else { - var result78 = null;; - }; + function parse_suffixed(context) { + var cacheKey = "suffixed" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - if (result78 !== null) { - var result79 = this._parse_equals(context); - if (result79 !== null) { - var result77 = [result78, result79]; + + + var savedPos10 = pos; + var result60 = parse_primary(context); + if (result60 !== null) { + var result61 = parse_question(context); + if (result61 !== null) { + var result59 = [result60, result61]; } else { - var result77 = null; - this._pos = savedPos14; + var result59 = null; + pos = savedPos10; } } else { - var result77 = null; - this._pos = savedPos14; - } - context.reportMatchFailures = savedReportMatchFailuresVar0; - if (result77 === null) { - var result76 = ''; - } else { - var result76 = null; - this._pos = savedPos13; - } - if (result76 !== null) { - var result74 = [result75, result76]; - } else { - var result74 = null; - this._pos = savedPos12; + var result59 = null; + pos = savedPos10; } - } else { - var result74 = null; - this._pos = savedPos12; - } - var result73 = result74 !== null - ? (function(name) { - return { - type: "rule_ref", - name: name - }; - })(result74[0]) - : null; - if (result73 !== null) { - var result62 = result73; - } else { - var result72 = this._parse_literal(context); - var result71 = result72 !== null - ? (function(value) { + var result58 = result59 !== null + ? (function(expression) { return { - type: "literal", - value: value + type: "optional", + expression: expression }; - })(result72) + })(result59[0]) : null; - if (result71 !== null) { - var result62 = result71; - } else { - var result70 = this._parse_dot(context); - var result69 = result70 !== null - ? (function() { return { type: "any" }; })() + if (result58 !== null) { + var result48 = result58; + } else { + var savedPos9 = pos; + var result56 = parse_primary(context); + if (result56 !== null) { + var result57 = parse_star(context); + if (result57 !== null) { + var result55 = [result56, result57]; + } else { + var result55 = null; + pos = savedPos9; + } + } else { + var result55 = null; + pos = savedPos9; + } + var result54 = result55 !== null + ? (function(expression) { + return { + type: "zero_or_more", + expression: expression + }; + })(result55[0]) : null; - if (result69 !== null) { - var result62 = result69; + if (result54 !== null) { + var result48 = result54; } else { - var result68 = this._parse_class(context); - if (result68 !== null) { - var result62 = result68; + var savedPos8 = pos; + var result52 = parse_primary(context); + if (result52 !== null) { + var result53 = parse_plus(context); + if (result53 !== null) { + var result51 = [result52, result53]; + } else { + var result51 = null; + pos = savedPos8; + } } else { - var savedPos11 = this._pos; - var result65 = this._parse_lparen(context); - if (result65 !== null) { - var result66 = this._parse_choice(context); - if (result66 !== null) { - var result67 = this._parse_rparen(context); - if (result67 !== null) { - var result64 = [result65, result66, result67]; - } else { - var result64 = null; - this._pos = savedPos11; - } - } else { - var result64 = null; - this._pos = savedPos11; - } - } else { - var result64 = null; - this._pos = savedPos11; - } - var result63 = result64 !== null - ? (function(expression) { return expression; })(result64[1]) - : null; - if (result63 !== null) { - var result62 = result63; + var result51 = null; + pos = savedPos8; + } + var result50 = result51 !== null + ? (function(expression) { + return { + type: "one_or_more", + expression: expression + }; + })(result51[0]) + : null; + if (result50 !== null) { + var result48 = result50; + } else { + var result49 = parse_primary(context); + if (result49 !== null) { + var result48 = result49; } else { - var result62 = null;; + var result48 = null;; }; }; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result48 }; + return result48; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result62 - }; - return result62; - }, - - _parse_action: function(context) { - var cacheKey = "action" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function parse_primary(context) { + var cacheKey = "primary" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos12 = pos; + var result75 = parse_identifier(context); + if (result75 !== null) { + var savedPos13 = pos; + var savedReportMatchFailuresVar0 = context.reportMatchFailures; + context.reportMatchFailures = false; + var savedPos14 = pos; + var result81 = parse_literal(context); + if (result81 !== null) { + var result78 = result81; + } else { + if (input.substr(pos, 0) === "") { + var result80 = ""; + pos += 0; + } else { + var result80 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("")); + } + } + if (result80 !== null) { + var result78 = result80; + } else { + var result78 = null;; + }; + } + if (result78 !== null) { + var result79 = parse_equals(context); + if (result79 !== null) { + var result77 = [result78, result79]; + } else { + var result77 = null; + pos = savedPos14; + } + } else { + var result77 = null; + pos = savedPos14; + } + context.reportMatchFailures = savedReportMatchFailuresVar0; + if (result77 === null) { + var result76 = ''; + } else { + var result76 = null; + pos = savedPos13; + } + if (result76 !== null) { + var result74 = [result75, result76]; + } else { + var result74 = null; + pos = savedPos12; + } + } else { + var result74 = null; + pos = savedPos12; + } + var result73 = result74 !== null + ? (function(name) { + return { + type: "rule_ref", + name: name + }; + })(result74[0]) + : null; + if (result73 !== null) { + var result62 = result73; + } else { + var result72 = parse_literal(context); + var result71 = result72 !== null + ? (function(value) { + return { + type: "literal", + value: value + }; + })(result72) + : null; + if (result71 !== null) { + var result62 = result71; + } else { + var result70 = parse_dot(context); + var result69 = result70 !== null + ? (function() { return { type: "any" }; })() + : null; + if (result69 !== null) { + var result62 = result69; + } else { + var result68 = parse_class(context); + if (result68 !== null) { + var result62 = result68; + } else { + var savedPos11 = pos; + var result65 = parse_lparen(context); + if (result65 !== null) { + var result66 = parse_choice(context); + if (result66 !== null) { + var result67 = parse_rparen(context); + if (result67 !== null) { + var result64 = [result65, result66, result67]; + } else { + var result64 = null; + pos = savedPos11; + } + } else { + var result64 = null; + pos = savedPos11; + } + } else { + var result64 = null; + pos = savedPos11; + } + var result63 = result64 !== null + ? (function(expression) { return expression; })(result64[1]) + : null; + if (result63 !== null) { + var result62 = result63; + } else { + var result62 = null;; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result62 + }; + return result62; } - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - var savedPos15 = this._pos; - var result84 = this._parse_braced(context); - if (result84 !== null) { - var result85 = this._parse___(context); - if (result85 !== null) { - var result83 = [result84, result85]; + function parse_action(context) { + var cacheKey = "action" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + var savedPos15 = pos; + var result84 = parse_braced(context); + if (result84 !== null) { + var result85 = parse___(context); + if (result85 !== null) { + var result83 = [result84, result85]; + } else { + var result83 = null; + pos = savedPos15; + } } else { var result83 = null; - this._pos = savedPos15; + pos = savedPos15; } - } else { - var result83 = null; - this._pos = savedPos15; - } - var result82 = result83 !== null - ? (function(braced) { return braced.substr(1, braced.length - 2); })(result83[0]) - : null; - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result82 === null) { - this._matchFailed("action"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result82 - }; - return result82; - }, - - _parse_braced: function(context) { - var cacheKey = "braced" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result82 = result83 !== null + ? (function(braced) { return braced.substr(1, braced.length - 2); })(result83[0]) + : null; + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result82 === null) { + matchFailed("action"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result82 + }; + return result82; } - var pos = this._pos; - - - var savedPos16 = this._pos; - if (this._input.substr(this._pos, 1) === "{") { - var result88 = "{"; - this._pos += 1; - } else { - var result88 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("{")); + function parse_braced(context) { + var cacheKey = "braced" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result88 !== null) { - var result89 = []; - var result93 = this._parse_braced(context); - if (result93 !== null) { - var result91 = result93; + + + var savedPos16 = pos; + if (input.substr(pos, 1) === "{") { + var result88 = "{"; + pos += 1; } else { - var result92 = this._parse_nonBraceCharacter(context); - if (result92 !== null) { - var result91 = result92; - } else { - var result91 = null;; - }; + var result88 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("{")); + } } - while (result91 !== null) { - result89.push(result91); - var result93 = this._parse_braced(context); + if (result88 !== null) { + var result89 = []; + var result93 = parse_braced(context); if (result93 !== null) { var result91 = result93; } else { - var result92 = this._parse_nonBraceCharacter(context); + var result92 = parse_nonBraceCharacter(context); if (result92 !== null) { var result91 = result92; } else { var result91 = null;; }; } - } - if (result89 !== null) { - if (this._input.substr(this._pos, 1) === "}") { - var result90 = "}"; - this._pos += 1; - } else { - var result90 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("}")); + while (result91 !== null) { + result89.push(result91); + var result93 = parse_braced(context); + if (result93 !== null) { + var result91 = result93; + } else { + var result92 = parse_nonBraceCharacter(context); + if (result92 !== null) { + var result91 = result92; + } else { + var result91 = null;; + }; } } - if (result90 !== null) { - var result87 = [result88, result89, result90]; + if (result89 !== null) { + if (input.substr(pos, 1) === "}") { + var result90 = "}"; + pos += 1; + } else { + var result90 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("}")); + } + } + if (result90 !== null) { + var result87 = [result88, result89, result90]; + } else { + var result87 = null; + pos = savedPos16; + } } else { var result87 = null; - this._pos = savedPos16; + pos = savedPos16; } } else { var result87 = null; - this._pos = savedPos16; + pos = savedPos16; } - } else { - var result87 = null; - this._pos = savedPos16; - } - var result86 = result87 !== null - ? (function(parts) { - return "{" + parts.join("") + "}"; - })(result87[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result86 - }; - return result86; - }, - - _parse_nonBraceCharacters: function(context) { - var cacheKey = "nonBraceCharacters" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var result96 = this._parse_nonBraceCharacter(context); - if (result96 !== null) { - var result95 = []; - while (result96 !== null) { - result95.push(result96); - var result96 = this._parse_nonBraceCharacter(context); - } - } else { - var result95 = null; - } - var result94 = result95 !== null - ? (function(chars) { return chars.join(""); })(result95) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result94 - }; - return result94; - }, - - _parse_nonBraceCharacter: function(context) { - var cacheKey = "nonBraceCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result86 = result87 !== null + ? (function(parts) { + return "{" + parts.join("") + "}"; + })(result87[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result86 + }; + return result86; } - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[^{}]/) !== null) { - var result97 = this._input.charAt(this._pos); - this._pos++; - } else { - var result97 = null; - if (context.reportMatchFailures) { - this._matchFailed("[^{}]"); + function parse_nonBraceCharacters(context) { + var cacheKey = "nonBraceCharacters" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result96 = parse_nonBraceCharacter(context); + if (result96 !== null) { + var result95 = []; + while (result96 !== null) { + result95.push(result96); + var result96 = parse_nonBraceCharacter(context); + } + } else { + var result95 = null; } + var result94 = result95 !== null + ? (function(chars) { return chars.join(""); })(result95) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result94 + }; + return result94; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result97 - }; - return result97; - }, - - _parse_equals: function(context) { - var cacheKey = "equals" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function parse_nonBraceCharacter(context) { + var cacheKey = "nonBraceCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[^{}]/) !== null) { + var result97 = input.charAt(pos); + pos++; + } else { + var result97 = null; + if (context.reportMatchFailures) { + matchFailed("[^{}]"); + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result97 + }; + return result97; } - var pos = this._pos; - - - var savedPos17 = this._pos; - if (this._input.substr(this._pos, 1) === "=") { - var result100 = "="; - this._pos += 1; - } else { - var result100 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("=")); + function parse_equals(context) { + var cacheKey = "equals" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result100 !== null) { - var result101 = this._parse___(context); - if (result101 !== null) { - var result99 = [result100, result101]; + + + var savedPos17 = pos; + if (input.substr(pos, 1) === "=") { + var result100 = "="; + pos += 1; + } else { + var result100 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("=")); + } + } + if (result100 !== null) { + var result101 = parse___(context); + if (result101 !== null) { + var result99 = [result100, result101]; + } else { + var result99 = null; + pos = savedPos17; + } } else { var result99 = null; - this._pos = savedPos17; + pos = savedPos17; } - } else { - var result99 = null; - this._pos = savedPos17; - } - var result98 = result99 !== null - ? (function() { return "="; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result98 - }; - return result98; - }, - - _parse_colon: function(context) { - var cacheKey = "colon" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result98 = result99 !== null + ? (function() { return "="; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result98 + }; + return result98; } - var pos = this._pos; - - - var savedPos18 = this._pos; - if (this._input.substr(this._pos, 1) === ":") { - var result104 = ":"; - this._pos += 1; - } else { - var result104 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString(":")); + function parse_colon(context) { + var cacheKey = "colon" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result104 !== null) { - var result105 = this._parse___(context); - if (result105 !== null) { - var result103 = [result104, result105]; + + + var savedPos18 = pos; + if (input.substr(pos, 1) === ":") { + var result104 = ":"; + pos += 1; + } else { + var result104 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString(":")); + } + } + if (result104 !== null) { + var result105 = parse___(context); + if (result105 !== null) { + var result103 = [result104, result105]; + } else { + var result103 = null; + pos = savedPos18; + } } else { var result103 = null; - this._pos = savedPos18; + pos = savedPos18; } - } else { - var result103 = null; - this._pos = savedPos18; - } - var result102 = result103 !== null - ? (function() { return ":"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result102 - }; - return result102; - }, - - _parse_semicolon: function(context) { - var cacheKey = "semicolon" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result102 = result103 !== null + ? (function() { return ":"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result102 + }; + return result102; } - var pos = this._pos; - - - var savedPos19 = this._pos; - if (this._input.substr(this._pos, 1) === ";") { - var result108 = ";"; - this._pos += 1; - } else { - var result108 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString(";")); + function parse_semicolon(context) { + var cacheKey = "semicolon" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result108 !== null) { - var result109 = this._parse___(context); - if (result109 !== null) { - var result107 = [result108, result109]; + + + var savedPos19 = pos; + if (input.substr(pos, 1) === ";") { + var result108 = ";"; + pos += 1; + } else { + var result108 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString(";")); + } + } + if (result108 !== null) { + var result109 = parse___(context); + if (result109 !== null) { + var result107 = [result108, result109]; + } else { + var result107 = null; + pos = savedPos19; + } } else { var result107 = null; - this._pos = savedPos19; + pos = savedPos19; } - } else { - var result107 = null; - this._pos = savedPos19; - } - var result106 = result107 !== null - ? (function() { return ";"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result106 - }; - return result106; - }, - - _parse_slash: function(context) { - var cacheKey = "slash" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result106 = result107 !== null + ? (function() { return ";"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result106 + }; + return result106; } - var pos = this._pos; - - - var savedPos20 = this._pos; - if (this._input.substr(this._pos, 1) === "/") { - var result112 = "/"; - this._pos += 1; - } else { - var result112 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("/")); + function parse_slash(context) { + var cacheKey = "slash" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result112 !== null) { - var result113 = this._parse___(context); - if (result113 !== null) { - var result111 = [result112, result113]; + + + var savedPos20 = pos; + if (input.substr(pos, 1) === "/") { + var result112 = "/"; + pos += 1; + } else { + var result112 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("/")); + } + } + if (result112 !== null) { + var result113 = parse___(context); + if (result113 !== null) { + var result111 = [result112, result113]; + } else { + var result111 = null; + pos = savedPos20; + } } else { var result111 = null; - this._pos = savedPos20; + pos = savedPos20; } - } else { - var result111 = null; - this._pos = savedPos20; - } - var result110 = result111 !== null - ? (function() { return "/"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result110 - }; - return result110; - }, - - _parse_and: function(context) { - var cacheKey = "and" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result110 = result111 !== null + ? (function() { return "/"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result110 + }; + return result110; } - var pos = this._pos; - - - var savedPos21 = this._pos; - if (this._input.substr(this._pos, 1) === "&") { - var result116 = "&"; - this._pos += 1; - } else { - var result116 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("&")); + function parse_and(context) { + var cacheKey = "and" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result116 !== null) { - var result117 = this._parse___(context); - if (result117 !== null) { - var result115 = [result116, result117]; + + + var savedPos21 = pos; + if (input.substr(pos, 1) === "&") { + var result116 = "&"; + pos += 1; + } else { + var result116 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("&")); + } + } + if (result116 !== null) { + var result117 = parse___(context); + if (result117 !== null) { + var result115 = [result116, result117]; + } else { + var result115 = null; + pos = savedPos21; + } } else { var result115 = null; - this._pos = savedPos21; + pos = savedPos21; } - } else { - var result115 = null; - this._pos = savedPos21; - } - var result114 = result115 !== null - ? (function() { return "&"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result114 - }; - return result114; - }, - - _parse_not: function(context) { - var cacheKey = "not" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result114 = result115 !== null + ? (function() { return "&"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result114 + }; + return result114; } - var pos = this._pos; - - - var savedPos22 = this._pos; - if (this._input.substr(this._pos, 1) === "!") { - var result120 = "!"; - this._pos += 1; - } else { - var result120 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("!")); + function parse_not(context) { + var cacheKey = "not" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result120 !== null) { - var result121 = this._parse___(context); - if (result121 !== null) { - var result119 = [result120, result121]; + + + var savedPos22 = pos; + if (input.substr(pos, 1) === "!") { + var result120 = "!"; + pos += 1; + } else { + var result120 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("!")); + } + } + if (result120 !== null) { + var result121 = parse___(context); + if (result121 !== null) { + var result119 = [result120, result121]; + } else { + var result119 = null; + pos = savedPos22; + } } else { var result119 = null; - this._pos = savedPos22; + pos = savedPos22; } - } else { - var result119 = null; - this._pos = savedPos22; - } - var result118 = result119 !== null - ? (function() { return "!"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result118 - }; - return result118; - }, - - _parse_question: function(context) { - var cacheKey = "question" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result118 = result119 !== null + ? (function() { return "!"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result118 + }; + return result118; } - var pos = this._pos; - - - var savedPos23 = this._pos; - if (this._input.substr(this._pos, 1) === "?") { - var result124 = "?"; - this._pos += 1; - } else { - var result124 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("?")); + function parse_question(context) { + var cacheKey = "question" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result124 !== null) { - var result125 = this._parse___(context); - if (result125 !== null) { - var result123 = [result124, result125]; + + + var savedPos23 = pos; + if (input.substr(pos, 1) === "?") { + var result124 = "?"; + pos += 1; + } else { + var result124 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("?")); + } + } + if (result124 !== null) { + var result125 = parse___(context); + if (result125 !== null) { + var result123 = [result124, result125]; + } else { + var result123 = null; + pos = savedPos23; + } } else { var result123 = null; - this._pos = savedPos23; + pos = savedPos23; } - } else { - var result123 = null; - this._pos = savedPos23; - } - var result122 = result123 !== null - ? (function() { return "?"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result122 - }; - return result122; - }, - - _parse_star: function(context) { - var cacheKey = "star" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result122 = result123 !== null + ? (function() { return "?"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result122 + }; + return result122; } - var pos = this._pos; - - - var savedPos24 = this._pos; - if (this._input.substr(this._pos, 1) === "*") { - var result128 = "*"; - this._pos += 1; - } else { - var result128 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("*")); + function parse_star(context) { + var cacheKey = "star" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result128 !== null) { - var result129 = this._parse___(context); - if (result129 !== null) { - var result127 = [result128, result129]; + + + var savedPos24 = pos; + if (input.substr(pos, 1) === "*") { + var result128 = "*"; + pos += 1; + } else { + var result128 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("*")); + } + } + if (result128 !== null) { + var result129 = parse___(context); + if (result129 !== null) { + var result127 = [result128, result129]; + } else { + var result127 = null; + pos = savedPos24; + } } else { var result127 = null; - this._pos = savedPos24; + pos = savedPos24; } - } else { - var result127 = null; - this._pos = savedPos24; - } - var result126 = result127 !== null - ? (function() { return "*"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result126 - }; - return result126; - }, - - _parse_plus: function(context) { - var cacheKey = "plus" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result126 = result127 !== null + ? (function() { return "*"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result126 + }; + return result126; } - var pos = this._pos; - - - var savedPos25 = this._pos; - if (this._input.substr(this._pos, 1) === "+") { - var result132 = "+"; - this._pos += 1; - } else { - var result132 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("+")); + function parse_plus(context) { + var cacheKey = "plus" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result132 !== null) { - var result133 = this._parse___(context); - if (result133 !== null) { - var result131 = [result132, result133]; + + + var savedPos25 = pos; + if (input.substr(pos, 1) === "+") { + var result132 = "+"; + pos += 1; + } else { + var result132 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("+")); + } + } + if (result132 !== null) { + var result133 = parse___(context); + if (result133 !== null) { + var result131 = [result132, result133]; + } else { + var result131 = null; + pos = savedPos25; + } } else { var result131 = null; - this._pos = savedPos25; + pos = savedPos25; } - } else { - var result131 = null; - this._pos = savedPos25; - } - var result130 = result131 !== null - ? (function() { return "+"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result130 - }; - return result130; - }, - - _parse_lparen: function(context) { - var cacheKey = "lparen" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result130 = result131 !== null + ? (function() { return "+"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result130 + }; + return result130; } - var pos = this._pos; - - - var savedPos26 = this._pos; - if (this._input.substr(this._pos, 1) === "(") { - var result136 = "("; - this._pos += 1; - } else { - var result136 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("(")); + function parse_lparen(context) { + var cacheKey = "lparen" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result136 !== null) { - var result137 = this._parse___(context); - if (result137 !== null) { - var result135 = [result136, result137]; + + + var savedPos26 = pos; + if (input.substr(pos, 1) === "(") { + var result136 = "("; + pos += 1; + } else { + var result136 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("(")); + } + } + if (result136 !== null) { + var result137 = parse___(context); + if (result137 !== null) { + var result135 = [result136, result137]; + } else { + var result135 = null; + pos = savedPos26; + } } else { var result135 = null; - this._pos = savedPos26; + pos = savedPos26; } - } else { - var result135 = null; - this._pos = savedPos26; - } - var result134 = result135 !== null - ? (function() { return "("; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result134 - }; - return result134; - }, - - _parse_rparen: function(context) { - var cacheKey = "rparen" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result134 = result135 !== null + ? (function() { return "("; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result134 + }; + return result134; } - var pos = this._pos; - - - var savedPos27 = this._pos; - if (this._input.substr(this._pos, 1) === ")") { - var result140 = ")"; - this._pos += 1; - } else { - var result140 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString(")")); + function parse_rparen(context) { + var cacheKey = "rparen" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result140 !== null) { - var result141 = this._parse___(context); - if (result141 !== null) { - var result139 = [result140, result141]; + + + var savedPos27 = pos; + if (input.substr(pos, 1) === ")") { + var result140 = ")"; + pos += 1; + } else { + var result140 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString(")")); + } + } + if (result140 !== null) { + var result141 = parse___(context); + if (result141 !== null) { + var result139 = [result140, result141]; + } else { + var result139 = null; + pos = savedPos27; + } } else { var result139 = null; - this._pos = savedPos27; + pos = savedPos27; } - } else { - var result139 = null; - this._pos = savedPos27; - } - var result138 = result139 !== null - ? (function() { return ")"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result138 - }; - return result138; - }, - - _parse_dot: function(context) { - var cacheKey = "dot" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result138 = result139 !== null + ? (function() { return ")"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result138 + }; + return result138; } - var pos = this._pos; - - - var savedPos28 = this._pos; - if (this._input.substr(this._pos, 1) === ".") { - var result144 = "."; - this._pos += 1; - } else { - var result144 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString(".")); + function parse_dot(context) { + var cacheKey = "dot" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result144 !== null) { - var result145 = this._parse___(context); - if (result145 !== null) { - var result143 = [result144, result145]; + + + var savedPos28 = pos; + if (input.substr(pos, 1) === ".") { + var result144 = "."; + pos += 1; + } else { + var result144 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString(".")); + } + } + if (result144 !== null) { + var result145 = parse___(context); + if (result145 !== null) { + var result143 = [result144, result145]; + } else { + var result143 = null; + pos = savedPos28; + } } else { var result143 = null; - this._pos = savedPos28; + pos = savedPos28; } - } else { - var result143 = null; - this._pos = savedPos28; - } - var result142 = result143 !== null - ? (function() { return "."; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result142 - }; - return result142; - }, - - _parse_identifier: function(context) { - var cacheKey = "identifier" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result142 = result143 !== null + ? (function() { return "."; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result142 + }; + return result142; } - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - var savedPos29 = this._pos; - var result158 = this._parse_letter(context); - if (result158 !== null) { - var result148 = result158; - } else { - if (this._input.substr(this._pos, 1) === "_") { - var result157 = "_"; - this._pos += 1; - } else { - var result157 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("_")); - } + function parse_identifier(context) { + var cacheKey = "identifier" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - if (result157 !== null) { - var result148 = result157; - } else { - if (this._input.substr(this._pos, 1) === "$") { - var result156 = "$"; - this._pos += 1; + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + var savedPos29 = pos; + var result158 = parse_letter(context); + if (result158 !== null) { + var result148 = result158; + } else { + if (input.substr(pos, 1) === "_") { + var result157 = "_"; + pos += 1; } else { - var result156 = null; + var result157 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("$")); + matchFailed(quoteString("_")); } } - if (result156 !== null) { - var result148 = result156; + if (result157 !== null) { + var result148 = result157; } else { - var result148 = null;; - }; - }; - } - if (result148 !== null) { - var result149 = []; - var result155 = this._parse_letter(context); - if (result155 !== null) { - var result151 = result155; - } else { - var result154 = this._parse_digit(context); - if (result154 !== null) { - var result151 = result154; - } else { - if (this._input.substr(this._pos, 1) === "_") { - var result153 = "_"; - this._pos += 1; + if (input.substr(pos, 1) === "$") { + var result156 = "$"; + pos += 1; } else { - var result153 = null; + var result156 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("_")); + matchFailed(quoteString("$")); } } - if (result153 !== null) { - var result151 = result153; + if (result156 !== null) { + var result148 = result156; } else { - if (this._input.substr(this._pos, 1) === "$") { - var result152 = "$"; - this._pos += 1; - } else { - var result152 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("$")); - } - } - if (result152 !== null) { - var result151 = result152; - } else { - var result151 = null;; - }; + var result148 = null;; }; }; } - while (result151 !== null) { - result149.push(result151); - var result155 = this._parse_letter(context); + if (result148 !== null) { + var result149 = []; + var result155 = parse_letter(context); if (result155 !== null) { var result151 = result155; } else { - var result154 = this._parse_digit(context); + var result154 = parse_digit(context); if (result154 !== null) { var result151 = result154; } else { - if (this._input.substr(this._pos, 1) === "_") { + if (input.substr(pos, 1) === "_") { var result153 = "_"; - this._pos += 1; + pos += 1; } else { var result153 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("_")); + matchFailed(quoteString("_")); } } if (result153 !== null) { var result151 = result153; } else { - if (this._input.substr(this._pos, 1) === "$") { + if (input.substr(pos, 1) === "$") { var result152 = "$"; - this._pos += 1; + pos += 1; } else { var result152 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("$")); + matchFailed(quoteString("$")); } } if (result152 !== null) { @@ -1596,1387 +1519,1362 @@ PEG.grammarParser = (function(){ }; }; } - } - if (result149 !== null) { - var result150 = this._parse___(context); - if (result150 !== null) { - var result147 = [result148, result149, result150]; + while (result151 !== null) { + result149.push(result151); + var result155 = parse_letter(context); + if (result155 !== null) { + var result151 = result155; + } else { + var result154 = parse_digit(context); + if (result154 !== null) { + var result151 = result154; + } else { + if (input.substr(pos, 1) === "_") { + var result153 = "_"; + pos += 1; + } else { + var result153 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("_")); + } + } + if (result153 !== null) { + var result151 = result153; + } else { + if (input.substr(pos, 1) === "$") { + var result152 = "$"; + pos += 1; + } else { + var result152 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("$")); + } + } + if (result152 !== null) { + var result151 = result152; + } else { + var result151 = null;; + }; + }; + }; + } + } + if (result149 !== null) { + var result150 = parse___(context); + if (result150 !== null) { + var result147 = [result148, result149, result150]; + } else { + var result147 = null; + pos = savedPos29; + } } else { var result147 = null; - this._pos = savedPos29; + pos = savedPos29; } } else { - var result147 = null; - this._pos = savedPos29; - } - } else { - var result147 = null; - this._pos = savedPos29; - } - var result146 = result147 !== null - ? (function(head, tail) { - return head + tail.join(""); - })(result147[0], result147[1]) - : null; - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result146 === null) { - this._matchFailed("identifier"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result146 - }; - return result146; - }, - - _parse_literal: function(context) { - var cacheKey = "literal" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - var savedPos30 = this._pos; - var result164 = this._parse_doubleQuotedLiteral(context); - if (result164 !== null) { - var result161 = result164; - } else { - var result163 = this._parse_singleQuotedLiteral(context); - if (result163 !== null) { - var result161 = result163; - } else { - var result161 = null;; + var result147 = null; + pos = savedPos29; + } + var result146 = result147 !== null + ? (function(head, tail) { + return head + tail.join(""); + })(result147[0], result147[1]) + : null; + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result146 === null) { + matchFailed("identifier"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result146 }; + return result146; } - if (result161 !== null) { - var result162 = this._parse___(context); - if (result162 !== null) { - var result160 = [result161, result162]; + + function parse_literal(context) { + var cacheKey = "literal" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + var savedPos30 = pos; + var result164 = parse_doubleQuotedLiteral(context); + if (result164 !== null) { + var result161 = result164; + } else { + var result163 = parse_singleQuotedLiteral(context); + if (result163 !== null) { + var result161 = result163; + } else { + var result161 = null;; + }; + } + if (result161 !== null) { + var result162 = parse___(context); + if (result162 !== null) { + var result160 = [result161, result162]; + } else { + var result160 = null; + pos = savedPos30; + } } else { var result160 = null; - this._pos = savedPos30; + pos = savedPos30; } - } else { - var result160 = null; - this._pos = savedPos30; - } - var result159 = result160 !== null - ? (function(literal) { return literal; })(result160[0]) - : null; - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result159 === null) { - this._matchFailed("literal"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result159 - }; - return result159; - }, - - _parse_doubleQuotedLiteral: function(context) { - var cacheKey = "doubleQuotedLiteral" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result159 = result160 !== null + ? (function(literal) { return literal; })(result160[0]) + : null; + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result159 === null) { + matchFailed("literal"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result159 + }; + return result159; } - var pos = this._pos; - - - var savedPos31 = this._pos; - if (this._input.substr(this._pos, 1) === "\"") { - var result167 = "\""; - this._pos += 1; - } else { - var result167 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\"")); + function parse_doubleQuotedLiteral(context) { + var cacheKey = "doubleQuotedLiteral" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result167 !== null) { - var result168 = []; - var result170 = this._parse_doubleQuotedCharacter(context); - while (result170 !== null) { - result168.push(result170); - var result170 = this._parse_doubleQuotedCharacter(context); - } - if (result168 !== null) { - if (this._input.substr(this._pos, 1) === "\"") { - var result169 = "\""; - this._pos += 1; - } else { - var result169 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\"")); - } + + + var savedPos31 = pos; + if (input.substr(pos, 1) === "\"") { + var result167 = "\""; + pos += 1; + } else { + var result167 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\"")); + } + } + if (result167 !== null) { + var result168 = []; + var result170 = parse_doubleQuotedCharacter(context); + while (result170 !== null) { + result168.push(result170); + var result170 = parse_doubleQuotedCharacter(context); } - if (result169 !== null) { - var result166 = [result167, result168, result169]; + if (result168 !== null) { + if (input.substr(pos, 1) === "\"") { + var result169 = "\""; + pos += 1; + } else { + var result169 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\"")); + } + } + if (result169 !== null) { + var result166 = [result167, result168, result169]; + } else { + var result166 = null; + pos = savedPos31; + } } else { var result166 = null; - this._pos = savedPos31; + pos = savedPos31; } } else { var result166 = null; - this._pos = savedPos31; + pos = savedPos31; } - } else { - var result166 = null; - this._pos = savedPos31; - } - var result165 = result166 !== null - ? (function(chars) { return chars.join(""); })(result166[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result165 - }; - return result165; - }, - - _parse_doubleQuotedCharacter: function(context) { - var cacheKey = "doubleQuotedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result165 = result166 !== null + ? (function(chars) { return chars.join(""); })(result166[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result165 + }; + return result165; } - var pos = this._pos; - - - var result177 = this._parse_simpleDoubleQuotedCharacter(context); - if (result177 !== null) { - var result171 = result177; - } else { - var result176 = this._parse_simpleEscapeSequence(context); - if (result176 !== null) { - var result171 = result176; - } else { - var result175 = this._parse_zeroEscapeSequence(context); - if (result175 !== null) { - var result171 = result175; - } else { - var result174 = this._parse_hexEscapeSequence(context); - if (result174 !== null) { - var result171 = result174; + function parse_doubleQuotedCharacter(context) { + var cacheKey = "doubleQuotedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result177 = parse_simpleDoubleQuotedCharacter(context); + if (result177 !== null) { + var result171 = result177; + } else { + var result176 = parse_simpleEscapeSequence(context); + if (result176 !== null) { + var result171 = result176; + } else { + var result175 = parse_zeroEscapeSequence(context); + if (result175 !== null) { + var result171 = result175; } else { - var result173 = this._parse_unicodeEscapeSequence(context); - if (result173 !== null) { - var result171 = result173; + var result174 = parse_hexEscapeSequence(context); + if (result174 !== null) { + var result171 = result174; } else { - var result172 = this._parse_eolEscapeSequence(context); - if (result172 !== null) { - var result171 = result172; + var result173 = parse_unicodeEscapeSequence(context); + if (result173 !== null) { + var result171 = result173; } else { - var result171 = null;; + var result172 = parse_eolEscapeSequence(context); + if (result172 !== null) { + var result171 = result172; + } else { + var result171 = null;; + }; }; }; }; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result171 }; + return result171; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result171 - }; - return result171; - }, - - _parse_simpleDoubleQuotedCharacter: function(context) { - var cacheKey = "simpleDoubleQuotedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos32 = this._pos; - var savedPos33 = this._pos; - var savedReportMatchFailuresVar1 = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos, 1) === "\"") { - var result185 = "\""; - this._pos += 1; - } else { - var result185 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\"")); + function parse_simpleDoubleQuotedCharacter(context) { + var cacheKey = "simpleDoubleQuotedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result185 !== null) { - var result182 = result185; - } else { - if (this._input.substr(this._pos, 1) === "\\") { - var result184 = "\\"; - this._pos += 1; - } else { - var result184 = null; + + + var savedPos32 = pos; + var savedPos33 = pos; + var savedReportMatchFailuresVar1 = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos, 1) === "\"") { + var result185 = "\""; + pos += 1; + } else { + var result185 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\")); + matchFailed(quoteString("\"")); } } - if (result184 !== null) { - var result182 = result184; + if (result185 !== null) { + var result182 = result185; } else { - var result183 = this._parse_eolChar(context); - if (result183 !== null) { - var result182 = result183; + if (input.substr(pos, 1) === "\\") { + var result184 = "\\"; + pos += 1; } else { - var result182 = null;; + var result184 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\")); + } + } + if (result184 !== null) { + var result182 = result184; + } else { + var result183 = parse_eolChar(context); + if (result183 !== null) { + var result182 = result183; + } else { + var result182 = null;; + }; }; - }; - } - context.reportMatchFailures = savedReportMatchFailuresVar1; - if (result182 === null) { - var result180 = ''; - } else { - var result180 = null; - this._pos = savedPos33; - } - if (result180 !== null) { - if (this._input.length > this._pos) { - var result181 = this._input.charAt(this._pos); - this._pos++; + } + context.reportMatchFailures = savedReportMatchFailuresVar1; + if (result182 === null) { + var result180 = ''; } else { - var result181 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } + var result180 = null; + pos = savedPos33; } - if (result181 !== null) { - var result179 = [result180, result181]; + if (result180 !== null) { + if (input.length > pos) { + var result181 = input.charAt(pos); + pos++; + } else { + var result181 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result181 !== null) { + var result179 = [result180, result181]; + } else { + var result179 = null; + pos = savedPos32; + } } else { var result179 = null; - this._pos = savedPos32; + pos = savedPos32; } - } else { - var result179 = null; - this._pos = savedPos32; - } - var result178 = result179 !== null - ? (function(char_) { return char_; })(result179[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result178 - }; - return result178; - }, - - _parse_singleQuotedLiteral: function(context) { - var cacheKey = "singleQuotedLiteral" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result178 = result179 !== null + ? (function(char_) { return char_; })(result179[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result178 + }; + return result178; } - var pos = this._pos; - - - var savedPos34 = this._pos; - if (this._input.substr(this._pos, 1) === "'") { - var result188 = "'"; - this._pos += 1; - } else { - var result188 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("'")); + function parse_singleQuotedLiteral(context) { + var cacheKey = "singleQuotedLiteral" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result188 !== null) { - var result189 = []; - var result191 = this._parse_singleQuotedCharacter(context); - while (result191 !== null) { - result189.push(result191); - var result191 = this._parse_singleQuotedCharacter(context); - } - if (result189 !== null) { - if (this._input.substr(this._pos, 1) === "'") { - var result190 = "'"; - this._pos += 1; - } else { - var result190 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("'")); - } + + + var savedPos34 = pos; + if (input.substr(pos, 1) === "'") { + var result188 = "'"; + pos += 1; + } else { + var result188 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("'")); + } + } + if (result188 !== null) { + var result189 = []; + var result191 = parse_singleQuotedCharacter(context); + while (result191 !== null) { + result189.push(result191); + var result191 = parse_singleQuotedCharacter(context); } - if (result190 !== null) { - var result187 = [result188, result189, result190]; + if (result189 !== null) { + if (input.substr(pos, 1) === "'") { + var result190 = "'"; + pos += 1; + } else { + var result190 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("'")); + } + } + if (result190 !== null) { + var result187 = [result188, result189, result190]; + } else { + var result187 = null; + pos = savedPos34; + } } else { var result187 = null; - this._pos = savedPos34; + pos = savedPos34; } } else { var result187 = null; - this._pos = savedPos34; + pos = savedPos34; } - } else { - var result187 = null; - this._pos = savedPos34; - } - var result186 = result187 !== null - ? (function(chars) { return chars.join(""); })(result187[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result186 - }; - return result186; - }, - - _parse_singleQuotedCharacter: function(context) { - var cacheKey = "singleQuotedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result186 = result187 !== null + ? (function(chars) { return chars.join(""); })(result187[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result186 + }; + return result186; } - var pos = this._pos; - - - var result198 = this._parse_simpleSingleQuotedCharacter(context); - if (result198 !== null) { - var result192 = result198; - } else { - var result197 = this._parse_simpleEscapeSequence(context); - if (result197 !== null) { - var result192 = result197; - } else { - var result196 = this._parse_zeroEscapeSequence(context); - if (result196 !== null) { - var result192 = result196; - } else { - var result195 = this._parse_hexEscapeSequence(context); - if (result195 !== null) { - var result192 = result195; + function parse_singleQuotedCharacter(context) { + var cacheKey = "singleQuotedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result198 = parse_simpleSingleQuotedCharacter(context); + if (result198 !== null) { + var result192 = result198; + } else { + var result197 = parse_simpleEscapeSequence(context); + if (result197 !== null) { + var result192 = result197; + } else { + var result196 = parse_zeroEscapeSequence(context); + if (result196 !== null) { + var result192 = result196; } else { - var result194 = this._parse_unicodeEscapeSequence(context); - if (result194 !== null) { - var result192 = result194; + var result195 = parse_hexEscapeSequence(context); + if (result195 !== null) { + var result192 = result195; } else { - var result193 = this._parse_eolEscapeSequence(context); - if (result193 !== null) { - var result192 = result193; + var result194 = parse_unicodeEscapeSequence(context); + if (result194 !== null) { + var result192 = result194; } else { - var result192 = null;; + var result193 = parse_eolEscapeSequence(context); + if (result193 !== null) { + var result192 = result193; + } else { + var result192 = null;; + }; }; }; }; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result192 }; + return result192; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result192 - }; - return result192; - }, - - _parse_simpleSingleQuotedCharacter: function(context) { - var cacheKey = "simpleSingleQuotedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos35 = this._pos; - var savedPos36 = this._pos; - var savedReportMatchFailuresVar2 = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos, 1) === "'") { - var result206 = "'"; - this._pos += 1; - } else { - var result206 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("'")); + function parse_simpleSingleQuotedCharacter(context) { + var cacheKey = "simpleSingleQuotedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result206 !== null) { - var result203 = result206; - } else { - if (this._input.substr(this._pos, 1) === "\\") { - var result205 = "\\"; - this._pos += 1; - } else { - var result205 = null; + + + var savedPos35 = pos; + var savedPos36 = pos; + var savedReportMatchFailuresVar2 = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos, 1) === "'") { + var result206 = "'"; + pos += 1; + } else { + var result206 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\")); + matchFailed(quoteString("'")); } } - if (result205 !== null) { - var result203 = result205; + if (result206 !== null) { + var result203 = result206; } else { - var result204 = this._parse_eolChar(context); - if (result204 !== null) { - var result203 = result204; + if (input.substr(pos, 1) === "\\") { + var result205 = "\\"; + pos += 1; + } else { + var result205 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\")); + } + } + if (result205 !== null) { + var result203 = result205; } else { - var result203 = null;; + var result204 = parse_eolChar(context); + if (result204 !== null) { + var result203 = result204; + } else { + var result203 = null;; + }; }; - }; - } - context.reportMatchFailures = savedReportMatchFailuresVar2; - if (result203 === null) { - var result201 = ''; - } else { - var result201 = null; - this._pos = savedPos36; - } - if (result201 !== null) { - if (this._input.length > this._pos) { - var result202 = this._input.charAt(this._pos); - this._pos++; + } + context.reportMatchFailures = savedReportMatchFailuresVar2; + if (result203 === null) { + var result201 = ''; } else { - var result202 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } + var result201 = null; + pos = savedPos36; } - if (result202 !== null) { - var result200 = [result201, result202]; + if (result201 !== null) { + if (input.length > pos) { + var result202 = input.charAt(pos); + pos++; + } else { + var result202 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result202 !== null) { + var result200 = [result201, result202]; + } else { + var result200 = null; + pos = savedPos35; + } } else { var result200 = null; - this._pos = savedPos35; + pos = savedPos35; } - } else { - var result200 = null; - this._pos = savedPos35; - } - var result199 = result200 !== null - ? (function(char_) { return char_; })(result200[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result199 - }; - return result199; - }, - - _parse_class: function(context) { - var cacheKey = "class" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result199 = result200 !== null + ? (function(char_) { return char_; })(result200[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result199 + }; + return result199; } - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - var savedPos37 = this._pos; - if (this._input.substr(this._pos, 1) === "[") { - var result209 = "["; - this._pos += 1; - } else { - var result209 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("[")); + function parse_class(context) { + var cacheKey = "class" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result209 !== null) { - if (this._input.substr(this._pos, 1) === "^") { - var result217 = "^"; - this._pos += 1; + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + var savedPos37 = pos; + if (input.substr(pos, 1) === "[") { + var result209 = "["; + pos += 1; } else { - var result217 = null; + var result209 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("^")); + matchFailed(quoteString("[")); } } - var result210 = result217 !== null ? result217 : ''; - if (result210 !== null) { - var result211 = []; - var result216 = this._parse_classCharacterRange(context); - if (result216 !== null) { - var result214 = result216; + if (result209 !== null) { + if (input.substr(pos, 1) === "^") { + var result217 = "^"; + pos += 1; } else { - var result215 = this._parse_classCharacter(context); - if (result215 !== null) { - var result214 = result215; - } else { - var result214 = null;; - }; + var result217 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("^")); + } } - while (result214 !== null) { - result211.push(result214); - var result216 = this._parse_classCharacterRange(context); + var result210 = result217 !== null ? result217 : ''; + if (result210 !== null) { + var result211 = []; + var result216 = parse_classCharacterRange(context); if (result216 !== null) { var result214 = result216; } else { - var result215 = this._parse_classCharacter(context); + var result215 = parse_classCharacter(context); if (result215 !== null) { var result214 = result215; } else { var result214 = null;; }; } - } - if (result211 !== null) { - if (this._input.substr(this._pos, 1) === "]") { - var result212 = "]"; - this._pos += 1; - } else { - var result212 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("]")); + while (result214 !== null) { + result211.push(result214); + var result216 = parse_classCharacterRange(context); + if (result216 !== null) { + var result214 = result216; + } else { + var result215 = parse_classCharacter(context); + if (result215 !== null) { + var result214 = result215; + } else { + var result214 = null;; + }; } } - if (result212 !== null) { - var result213 = this._parse___(context); - if (result213 !== null) { - var result208 = [result209, result210, result211, result212, result213]; + if (result211 !== null) { + if (input.substr(pos, 1) === "]") { + var result212 = "]"; + pos += 1; + } else { + var result212 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("]")); + } + } + if (result212 !== null) { + var result213 = parse___(context); + if (result213 !== null) { + var result208 = [result209, result210, result211, result212, result213]; + } else { + var result208 = null; + pos = savedPos37; + } } else { var result208 = null; - this._pos = savedPos37; + pos = savedPos37; } } else { var result208 = null; - this._pos = savedPos37; + pos = savedPos37; } } else { var result208 = null; - this._pos = savedPos37; + pos = savedPos37; } } else { var result208 = null; - this._pos = savedPos37; + pos = savedPos37; + } + var result207 = result208 !== null + ? (function(inverted, parts) { + partsConverted = PEG.ArrayUtils.map(parts, function(part) { + return part.data; + }); + rawText = "[" + + inverted + + PEG.ArrayUtils.map(parts, function(part) { + return part.rawText; + }).join("") + + "]"; + + return { + type: "class", + inverted: inverted === "^", + parts: partsConverted, + // FIXME: Get the raw text from the input directly. + rawText: rawText + }; + })(result208[1], result208[2]) + : null; + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result207 === null) { + matchFailed("character class"); } - } else { - var result208 = null; - this._pos = savedPos37; - } - var result207 = result208 !== null - ? (function(inverted, parts) { - partsConverted = PEG.ArrayUtils.map(parts, function(part) { - return part.data; - }); - rawText = "[" - + inverted - + PEG.ArrayUtils.map(parts, function(part) { - return part.rawText; - }).join("") - + "]"; - - return { - type: "class", - inverted: inverted === "^", - parts: partsConverted, - // FIXME: Get the raw text from the input directly. - rawText: rawText - }; - })(result208[1], result208[2]) - : null; - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result207 === null) { - this._matchFailed("character class"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result207 - }; - return result207; - }, - - _parse_classCharacterRange: function(context) { - var cacheKey = "classCharacterRange" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + + cache[cacheKey] = { + nextPos: pos, + result: result207 + }; + return result207; } - var pos = this._pos; - - - var savedPos38 = this._pos; - var result220 = this._parse_classCharacter(context); - if (result220 !== null) { - if (this._input.substr(this._pos, 1) === "-") { - var result221 = "-"; - this._pos += 1; - } else { - var result221 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("-")); - } + function parse_classCharacterRange(context) { + var cacheKey = "classCharacterRange" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - if (result221 !== null) { - var result222 = this._parse_classCharacter(context); - if (result222 !== null) { - var result219 = [result220, result221, result222]; + + + var savedPos38 = pos; + var result220 = parse_classCharacter(context); + if (result220 !== null) { + if (input.substr(pos, 1) === "-") { + var result221 = "-"; + pos += 1; + } else { + var result221 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("-")); + } + } + if (result221 !== null) { + var result222 = parse_classCharacter(context); + if (result222 !== null) { + var result219 = [result220, result221, result222]; + } else { + var result219 = null; + pos = savedPos38; + } } else { var result219 = null; - this._pos = savedPos38; + pos = savedPos38; } } else { var result219 = null; - this._pos = savedPos38; - } - } else { - var result219 = null; - this._pos = savedPos38; - } - var result218 = result219 !== null - ? (function(begin, end) { - if (begin.data.charCodeAt(0) > end.data.charCodeAt(0)) { - throw new this.SyntaxError( - "Invalid character range: " + begin.rawText + "-" + end.rawText + "." - ); - } + pos = savedPos38; + } + var result218 = result219 !== null + ? (function(begin, end) { + if (begin.data.charCodeAt(0) > end.data.charCodeAt(0)) { + throw new this.SyntaxError( + "Invalid character range: " + begin.rawText + "-" + end.rawText + "." + ); + } + + return { + data: [begin.data, end.data], + // FIXME: Get the raw text from the input directly. + rawText: begin.rawText + "-" + end.rawText + } + })(result219[0], result219[2]) + : null; - return { - data: [begin.data, end.data], - // FIXME: Get the raw text from the input directly. - rawText: begin.rawText + "-" + end.rawText - } - })(result219[0], result219[2]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result218 - }; - return result218; - }, - - _parse_classCharacter: function(context) { - var cacheKey = "classCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + + + cache[cacheKey] = { + nextPos: pos, + result: result218 + }; + return result218; } - var pos = this._pos; - - - var result224 = this._parse_bracketDelimitedCharacter(context); - var result223 = result224 !== null - ? (function(char_) { - return { - data: char_, - // FIXME: Get the raw text from the input directly. - rawText: PEG.RegExpUtils.quoteForClass(char_) - }; - })(result224) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result223 - }; - return result223; - }, - - _parse_bracketDelimitedCharacter: function(context) { - var cacheKey = "bracketDelimitedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function parse_classCharacter(context) { + var cacheKey = "classCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result224 = parse_bracketDelimitedCharacter(context); + var result223 = result224 !== null + ? (function(char_) { + return { + data: char_, + // FIXME: Get the raw text from the input directly. + rawText: PEG.RegExpUtils.quoteForClass(char_) + }; + })(result224) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result223 + }; + return result223; } - var pos = this._pos; - - - var result231 = this._parse_simpleBracketDelimitedCharacter(context); - if (result231 !== null) { - var result225 = result231; - } else { - var result230 = this._parse_simpleEscapeSequence(context); - if (result230 !== null) { - var result225 = result230; - } else { - var result229 = this._parse_zeroEscapeSequence(context); - if (result229 !== null) { - var result225 = result229; - } else { - var result228 = this._parse_hexEscapeSequence(context); - if (result228 !== null) { - var result225 = result228; + function parse_bracketDelimitedCharacter(context) { + var cacheKey = "bracketDelimitedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result231 = parse_simpleBracketDelimitedCharacter(context); + if (result231 !== null) { + var result225 = result231; + } else { + var result230 = parse_simpleEscapeSequence(context); + if (result230 !== null) { + var result225 = result230; + } else { + var result229 = parse_zeroEscapeSequence(context); + if (result229 !== null) { + var result225 = result229; } else { - var result227 = this._parse_unicodeEscapeSequence(context); - if (result227 !== null) { - var result225 = result227; + var result228 = parse_hexEscapeSequence(context); + if (result228 !== null) { + var result225 = result228; } else { - var result226 = this._parse_eolEscapeSequence(context); - if (result226 !== null) { - var result225 = result226; + var result227 = parse_unicodeEscapeSequence(context); + if (result227 !== null) { + var result225 = result227; } else { - var result225 = null;; + var result226 = parse_eolEscapeSequence(context); + if (result226 !== null) { + var result225 = result226; + } else { + var result225 = null;; + }; }; }; }; }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result225 }; + return result225; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result225 - }; - return result225; - }, - - _parse_simpleBracketDelimitedCharacter: function(context) { - var cacheKey = "simpleBracketDelimitedCharacter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var savedPos39 = this._pos; - var savedPos40 = this._pos; - var savedReportMatchFailuresVar3 = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos, 1) === "]") { - var result239 = "]"; - this._pos += 1; - } else { - var result239 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("]")); + function parse_simpleBracketDelimitedCharacter(context) { + var cacheKey = "simpleBracketDelimitedCharacter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result239 !== null) { - var result236 = result239; - } else { - if (this._input.substr(this._pos, 1) === "\\") { - var result238 = "\\"; - this._pos += 1; - } else { - var result238 = null; + + + var savedPos39 = pos; + var savedPos40 = pos; + var savedReportMatchFailuresVar3 = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos, 1) === "]") { + var result239 = "]"; + pos += 1; + } else { + var result239 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\")); + matchFailed(quoteString("]")); } } - if (result238 !== null) { - var result236 = result238; + if (result239 !== null) { + var result236 = result239; } else { - var result237 = this._parse_eolChar(context); - if (result237 !== null) { - var result236 = result237; + if (input.substr(pos, 1) === "\\") { + var result238 = "\\"; + pos += 1; + } else { + var result238 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\")); + } + } + if (result238 !== null) { + var result236 = result238; } else { - var result236 = null;; + var result237 = parse_eolChar(context); + if (result237 !== null) { + var result236 = result237; + } else { + var result236 = null;; + }; }; - }; - } - context.reportMatchFailures = savedReportMatchFailuresVar3; - if (result236 === null) { - var result234 = ''; - } else { - var result234 = null; - this._pos = savedPos40; - } - if (result234 !== null) { - if (this._input.length > this._pos) { - var result235 = this._input.charAt(this._pos); - this._pos++; + } + context.reportMatchFailures = savedReportMatchFailuresVar3; + if (result236 === null) { + var result234 = ''; } else { - var result235 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } + var result234 = null; + pos = savedPos40; } - if (result235 !== null) { - var result233 = [result234, result235]; + if (result234 !== null) { + if (input.length > pos) { + var result235 = input.charAt(pos); + pos++; + } else { + var result235 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result235 !== null) { + var result233 = [result234, result235]; + } else { + var result233 = null; + pos = savedPos39; + } } else { var result233 = null; - this._pos = savedPos39; + pos = savedPos39; } - } else { - var result233 = null; - this._pos = savedPos39; - } - var result232 = result233 !== null - ? (function(char_) { return char_; })(result233[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result232 - }; - return result232; - }, - - _parse_simpleEscapeSequence: function(context) { - var cacheKey = "simpleEscapeSequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result232 = result233 !== null + ? (function(char_) { return char_; })(result233[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result232 + }; + return result232; } - var pos = this._pos; - - - var savedPos41 = this._pos; - if (this._input.substr(this._pos, 1) === "\\") { - var result242 = "\\"; - this._pos += 1; - } else { - var result242 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\")); + function parse_simpleEscapeSequence(context) { + var cacheKey = "simpleEscapeSequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result242 !== null) { - var savedPos42 = this._pos; - var savedReportMatchFailuresVar4 = context.reportMatchFailures; - context.reportMatchFailures = false; - var result249 = this._parse_digit(context); - if (result249 !== null) { - var result245 = result249; + + + var savedPos41 = pos; + if (input.substr(pos, 1) === "\\") { + var result242 = "\\"; + pos += 1; } else { - if (this._input.substr(this._pos, 1) === "x") { - var result248 = "x"; - this._pos += 1; - } else { - var result248 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("x")); - } + var result242 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\")); } - if (result248 !== null) { - var result245 = result248; + } + if (result242 !== null) { + var savedPos42 = pos; + var savedReportMatchFailuresVar4 = context.reportMatchFailures; + context.reportMatchFailures = false; + var result249 = parse_digit(context); + if (result249 !== null) { + var result245 = result249; } else { - if (this._input.substr(this._pos, 1) === "u") { - var result247 = "u"; - this._pos += 1; + if (input.substr(pos, 1) === "x") { + var result248 = "x"; + pos += 1; } else { - var result247 = null; + var result248 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("u")); + matchFailed(quoteString("x")); } } - if (result247 !== null) { - var result245 = result247; + if (result248 !== null) { + var result245 = result248; } else { - var result246 = this._parse_eolChar(context); - if (result246 !== null) { - var result245 = result246; + if (input.substr(pos, 1) === "u") { + var result247 = "u"; + pos += 1; + } else { + var result247 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("u")); + } + } + if (result247 !== null) { + var result245 = result247; } else { - var result245 = null;; + var result246 = parse_eolChar(context); + if (result246 !== null) { + var result245 = result246; + } else { + var result245 = null;; + }; }; }; - }; - } - context.reportMatchFailures = savedReportMatchFailuresVar4; - if (result245 === null) { - var result243 = ''; - } else { - var result243 = null; - this._pos = savedPos42; - } - if (result243 !== null) { - if (this._input.length > this._pos) { - var result244 = this._input.charAt(this._pos); - this._pos++; + } + context.reportMatchFailures = savedReportMatchFailuresVar4; + if (result245 === null) { + var result243 = ''; } else { - var result244 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } + var result243 = null; + pos = savedPos42; } - if (result244 !== null) { - var result241 = [result242, result243, result244]; + if (result243 !== null) { + if (input.length > pos) { + var result244 = input.charAt(pos); + pos++; + } else { + var result244 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result244 !== null) { + var result241 = [result242, result243, result244]; + } else { + var result241 = null; + pos = savedPos41; + } } else { var result241 = null; - this._pos = savedPos41; + pos = savedPos41; } } else { var result241 = null; - this._pos = savedPos41; - } - } else { - var result241 = null; - this._pos = savedPos41; - } - var result240 = result241 !== null - ? (function(char_) { - return char_ - .replace("b", "\b") - .replace("f", "\f") - .replace("n", "\n") - .replace("r", "\r") - .replace("t", "\t") - .replace("v", "\x0B") // IE does not recognize "\v". - })(result241[2]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result240 - }; - return result240; - }, - - _parse_zeroEscapeSequence: function(context) { - var cacheKey = "zeroEscapeSequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + pos = savedPos41; + } + var result240 = result241 !== null + ? (function(char_) { + return char_ + .replace("b", "\b") + .replace("f", "\f") + .replace("n", "\n") + .replace("r", "\r") + .replace("t", "\t") + .replace("v", "\x0B") // IE does not recognize "\v". + })(result241[2]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result240 + }; + return result240; } - var pos = this._pos; - - - var savedPos43 = this._pos; - if (this._input.substr(this._pos, 2) === "\\0") { - var result252 = "\\0"; - this._pos += 2; - } else { - var result252 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\0")); + function parse_zeroEscapeSequence(context) { + var cacheKey = "zeroEscapeSequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result252 !== null) { - var savedPos44 = this._pos; - var savedReportMatchFailuresVar5 = context.reportMatchFailures; - context.reportMatchFailures = false; - var result254 = this._parse_digit(context); - context.reportMatchFailures = savedReportMatchFailuresVar5; - if (result254 === null) { - var result253 = ''; + + + var savedPos43 = pos; + if (input.substr(pos, 2) === "\\0") { + var result252 = "\\0"; + pos += 2; } else { - var result253 = null; - this._pos = savedPos44; + var result252 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\0")); + } } - if (result253 !== null) { - var result251 = [result252, result253]; + if (result252 !== null) { + var savedPos44 = pos; + var savedReportMatchFailuresVar5 = context.reportMatchFailures; + context.reportMatchFailures = false; + var result254 = parse_digit(context); + context.reportMatchFailures = savedReportMatchFailuresVar5; + if (result254 === null) { + var result253 = ''; + } else { + var result253 = null; + pos = savedPos44; + } + if (result253 !== null) { + var result251 = [result252, result253]; + } else { + var result251 = null; + pos = savedPos43; + } } else { var result251 = null; - this._pos = savedPos43; + pos = savedPos43; } - } else { - var result251 = null; - this._pos = savedPos43; - } - var result250 = result251 !== null - ? (function() { return "\0"; })() - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result250 - }; - return result250; - }, - - _parse_hexEscapeSequence: function(context) { - var cacheKey = "hexEscapeSequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result250 = result251 !== null + ? (function() { return "\0"; })() + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result250 + }; + return result250; } - var pos = this._pos; - - - var savedPos45 = this._pos; - if (this._input.substr(this._pos, 2) === "\\x") { - var result257 = "\\x"; - this._pos += 2; - } else { - var result257 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\x")); + function parse_hexEscapeSequence(context) { + var cacheKey = "hexEscapeSequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result257 !== null) { - var result258 = this._parse_hexDigit(context); - if (result258 !== null) { - var result259 = this._parse_hexDigit(context); - if (result259 !== null) { - var result256 = [result257, result258, result259]; + + + var savedPos45 = pos; + if (input.substr(pos, 2) === "\\x") { + var result257 = "\\x"; + pos += 2; + } else { + var result257 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\x")); + } + } + if (result257 !== null) { + var result258 = parse_hexDigit(context); + if (result258 !== null) { + var result259 = parse_hexDigit(context); + if (result259 !== null) { + var result256 = [result257, result258, result259]; + } else { + var result256 = null; + pos = savedPos45; + } } else { var result256 = null; - this._pos = savedPos45; + pos = savedPos45; } } else { var result256 = null; - this._pos = savedPos45; + pos = savedPos45; } - } else { - var result256 = null; - this._pos = savedPos45; - } - var result255 = result256 !== null - ? (function(h1, h2) { - return String.fromCharCode(parseInt("0x" + h1 + h2)); - })(result256[1], result256[2]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result255 - }; - return result255; - }, - - _parse_unicodeEscapeSequence: function(context) { - var cacheKey = "unicodeEscapeSequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result255 = result256 !== null + ? (function(h1, h2) { + return String.fromCharCode(parseInt("0x" + h1 + h2)); + })(result256[1], result256[2]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result255 + }; + return result255; } - var pos = this._pos; - - - var savedPos46 = this._pos; - if (this._input.substr(this._pos, 2) === "\\u") { - var result262 = "\\u"; - this._pos += 2; - } else { - var result262 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\u")); + function parse_unicodeEscapeSequence(context) { + var cacheKey = "unicodeEscapeSequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result262 !== null) { - var result263 = this._parse_hexDigit(context); - if (result263 !== null) { - var result264 = this._parse_hexDigit(context); - if (result264 !== null) { - var result265 = this._parse_hexDigit(context); - if (result265 !== null) { - var result266 = this._parse_hexDigit(context); - if (result266 !== null) { - var result261 = [result262, result263, result264, result265, result266]; + + + var savedPos46 = pos; + if (input.substr(pos, 2) === "\\u") { + var result262 = "\\u"; + pos += 2; + } else { + var result262 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\u")); + } + } + if (result262 !== null) { + var result263 = parse_hexDigit(context); + if (result263 !== null) { + var result264 = parse_hexDigit(context); + if (result264 !== null) { + var result265 = parse_hexDigit(context); + if (result265 !== null) { + var result266 = parse_hexDigit(context); + if (result266 !== null) { + var result261 = [result262, result263, result264, result265, result266]; + } else { + var result261 = null; + pos = savedPos46; + } } else { var result261 = null; - this._pos = savedPos46; + pos = savedPos46; } } else { var result261 = null; - this._pos = savedPos46; + pos = savedPos46; } } else { var result261 = null; - this._pos = savedPos46; + pos = savedPos46; } } else { var result261 = null; - this._pos = savedPos46; + pos = savedPos46; } - } else { - var result261 = null; - this._pos = savedPos46; - } - var result260 = result261 !== null - ? (function(h1, h2, h3, h4) { - return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); - })(result261[1], result261[2], result261[3], result261[4]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result260 - }; - return result260; - }, - - _parse_eolEscapeSequence: function(context) { - var cacheKey = "eolEscapeSequence" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + var result260 = result261 !== null + ? (function(h1, h2, h3, h4) { + return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); + })(result261[1], result261[2], result261[3], result261[4]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result260 + }; + return result260; } - var pos = this._pos; - - - var savedPos47 = this._pos; - if (this._input.substr(this._pos, 1) === "\\") { - var result269 = "\\"; - this._pos += 1; - } else { - var result269 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\\")); + function parse_eolEscapeSequence(context) { + var cacheKey = "eolEscapeSequence" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result269 !== null) { - var result270 = this._parse_eol(context); - if (result270 !== null) { - var result268 = [result269, result270]; + + + var savedPos47 = pos; + if (input.substr(pos, 1) === "\\") { + var result269 = "\\"; + pos += 1; } else { - var result268 = null; - this._pos = savedPos47; - } - } else { - var result268 = null; - this._pos = savedPos47; - } - var result267 = result268 !== null - ? (function(eol) { return eol; })(result268[1]) - : null; - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result267 - }; - return result267; - }, - - _parse_digit: function(context) { - var cacheKey = "digit" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[0-9]/) !== null) { - var result271 = this._input.charAt(this._pos); - this._pos++; - } else { - var result271 = null; - if (context.reportMatchFailures) { - this._matchFailed("[0-9]"); + var result269 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\\")); + } } - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result271 - }; - return result271; - }, - - _parse_hexDigit: function(context) { - var cacheKey = "hexDigit" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[0-9a-fA-F]/) !== null) { - var result272 = this._input.charAt(this._pos); - this._pos++; - } else { - var result272 = null; - if (context.reportMatchFailures) { - this._matchFailed("[0-9a-fA-F]"); + if (result269 !== null) { + var result270 = parse_eol(context); + if (result270 !== null) { + var result268 = [result269, result270]; + } else { + var result268 = null; + pos = savedPos47; + } + } else { + var result268 = null; + pos = savedPos47; } - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result272 - }; - return result272; - }, - - _parse_letter: function(context) { - var cacheKey = "letter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - var result275 = this._parse_lowerCaseLetter(context); - if (result275 !== null) { - var result273 = result275; - } else { - var result274 = this._parse_upperCaseLetter(context); - if (result274 !== null) { - var result273 = result274; - } else { - var result273 = null;; + var result267 = result268 !== null + ? (function(eol) { return eol; })(result268[1]) + : null; + + + + cache[cacheKey] = { + nextPos: pos, + result: result267 }; + return result267; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result273 - }; - return result273; - }, - - _parse_lowerCaseLetter: function(context) { - var cacheKey = "lowerCaseLetter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[a-z]/) !== null) { - var result276 = this._input.charAt(this._pos); - this._pos++; - } else { - var result276 = null; - if (context.reportMatchFailures) { - this._matchFailed("[a-z]"); + function parse_digit(context) { + var cacheKey = "digit" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[0-9]/) !== null) { + var result271 = input.charAt(pos); + pos++; + } else { + var result271 = null; + if (context.reportMatchFailures) { + matchFailed("[0-9]"); + } } + + + + cache[cacheKey] = { + nextPos: pos, + result: result271 + }; + return result271; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result276 - }; - return result276; - }, - - _parse_upperCaseLetter: function(context) { - var cacheKey = "upperCaseLetter" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function parse_hexDigit(context) { + var cacheKey = "hexDigit" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[0-9a-fA-F]/) !== null) { + var result272 = input.charAt(pos); + pos++; + } else { + var result272 = null; + if (context.reportMatchFailures) { + matchFailed("[0-9a-fA-F]"); + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result272 + }; + return result272; } - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[A-Z]/) !== null) { - var result277 = this._input.charAt(this._pos); - this._pos++; - } else { - var result277 = null; - if (context.reportMatchFailures) { - this._matchFailed("[A-Z]"); + function parse_letter(context) { + var cacheKey = "letter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result275 = parse_lowerCaseLetter(context); + if (result275 !== null) { + var result273 = result275; + } else { + var result274 = parse_upperCaseLetter(context); + if (result274 !== null) { + var result273 = result274; + } else { + var result273 = null;; + }; } + + + + cache[cacheKey] = { + nextPos: pos, + result: result273 + }; + return result273; } - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result277 - }; - return result277; - }, - - _parse___: function(context) { - var cacheKey = "__" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + function parse_lowerCaseLetter(context) { + var cacheKey = "lowerCaseLetter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[a-z]/) !== null) { + var result276 = input.charAt(pos); + pos++; + } else { + var result276 = null; + if (context.reportMatchFailures) { + matchFailed("[a-z]"); + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result276 + }; + return result276; } - var pos = this._pos; - - - var result278 = []; - var result282 = this._parse_whitespace(context); - if (result282 !== null) { - var result279 = result282; - } else { - var result281 = this._parse_eol(context); - if (result281 !== null) { - var result279 = result281; - } else { - var result280 = this._parse_comment(context); - if (result280 !== null) { - var result279 = result280; - } else { - var result279 = null;; - }; + function parse_upperCaseLetter(context) { + var cacheKey = "upperCaseLetter" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[A-Z]/) !== null) { + var result277 = input.charAt(pos); + pos++; + } else { + var result277 = null; + if (context.reportMatchFailures) { + matchFailed("[A-Z]"); + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result277 }; + return result277; } - while (result279 !== null) { - result278.push(result279); - var result282 = this._parse_whitespace(context); + + function parse___(context) { + var cacheKey = "__" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result278 = []; + var result282 = parse_whitespace(context); if (result282 !== null) { var result279 = result282; } else { - var result281 = this._parse_eol(context); + var result281 = parse_eol(context); if (result281 !== null) { var result279 = result281; } else { - var result280 = this._parse_comment(context); + var result280 = parse_comment(context); if (result280 !== null) { var result279 = result280; } else { @@ -2984,238 +2882,208 @@ PEG.grammarParser = (function(){ }; }; } - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result278 - }; - return result278; - }, - - _parse_comment: function(context) { - var cacheKey = "comment" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - var result285 = this._parse_singleLineComment(context); - if (result285 !== null) { - var result283 = result285; - } else { - var result284 = this._parse_multiLineComment(context); - if (result284 !== null) { - var result283 = result284; - } else { - var result283 = null;; + while (result279 !== null) { + result278.push(result279); + var result282 = parse_whitespace(context); + if (result282 !== null) { + var result279 = result282; + } else { + var result281 = parse_eol(context); + if (result281 !== null) { + var result279 = result281; + } else { + var result280 = parse_comment(context); + if (result280 !== null) { + var result279 = result280; + } else { + var result279 = null;; + }; + }; + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result278 }; - } - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result283 === null) { - this._matchFailed("comment"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result283 - }; - return result283; - }, - - _parse_singleLineComment: function(context) { - var cacheKey = "singleLineComment" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + return result278; } - var pos = this._pos; - - - var savedPos48 = this._pos; - if (this._input.substr(this._pos, 2) === "//") { - var result287 = "//"; - this._pos += 2; - } else { - var result287 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("//")); + function parse_comment(context) { + var cacheKey = "comment" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result287 !== null) { - var result288 = []; - var savedPos49 = this._pos; - var savedPos50 = this._pos; - var savedReportMatchFailuresVar6 = context.reportMatchFailures; + + var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; - var result292 = this._parse_eolChar(context); - context.reportMatchFailures = savedReportMatchFailuresVar6; - if (result292 === null) { - var result290 = ''; + var result285 = parse_singleLineComment(context); + if (result285 !== null) { + var result283 = result285; } else { - var result290 = null; - this._pos = savedPos50; - } - if (result290 !== null) { - if (this._input.length > this._pos) { - var result291 = this._input.charAt(this._pos); - this._pos++; - } else { - var result291 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } - } - if (result291 !== null) { - var result289 = [result290, result291]; + var result284 = parse_multiLineComment(context); + if (result284 !== null) { + var result283 = result284; } else { - var result289 = null; - this._pos = savedPos49; - } + var result283 = null;; + }; + } + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result283 === null) { + matchFailed("comment"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result283 + }; + return result283; + } + + function parse_singleLineComment(context) { + var cacheKey = "singleLineComment" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos48 = pos; + if (input.substr(pos, 2) === "//") { + var result287 = "//"; + pos += 2; } else { - var result289 = null; - this._pos = savedPos49; + var result287 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("//")); + } } - while (result289 !== null) { - result288.push(result289); - var savedPos49 = this._pos; - var savedPos50 = this._pos; + if (result287 !== null) { + var result288 = []; + var savedPos49 = pos; + var savedPos50 = pos; var savedReportMatchFailuresVar6 = context.reportMatchFailures; context.reportMatchFailures = false; - var result292 = this._parse_eolChar(context); + var result292 = parse_eolChar(context); context.reportMatchFailures = savedReportMatchFailuresVar6; if (result292 === null) { var result290 = ''; } else { var result290 = null; - this._pos = savedPos50; + pos = savedPos50; } if (result290 !== null) { - if (this._input.length > this._pos) { - var result291 = this._input.charAt(this._pos); - this._pos++; + if (input.length > pos) { + var result291 = input.charAt(pos); + pos++; } else { var result291 = null; if (context.reportMatchFailures) { - this._matchFailed('any character'); + matchFailed('any character'); } } if (result291 !== null) { var result289 = [result290, result291]; } else { var result289 = null; - this._pos = savedPos49; + pos = savedPos49; } } else { var result289 = null; - this._pos = savedPos49; + pos = savedPos49; + } + while (result289 !== null) { + result288.push(result289); + var savedPos49 = pos; + var savedPos50 = pos; + var savedReportMatchFailuresVar6 = context.reportMatchFailures; + context.reportMatchFailures = false; + var result292 = parse_eolChar(context); + context.reportMatchFailures = savedReportMatchFailuresVar6; + if (result292 === null) { + var result290 = ''; + } else { + var result290 = null; + pos = savedPos50; + } + if (result290 !== null) { + if (input.length > pos) { + var result291 = input.charAt(pos); + pos++; + } else { + var result291 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result291 !== null) { + var result289 = [result290, result291]; + } else { + var result289 = null; + pos = savedPos49; + } + } else { + var result289 = null; + pos = savedPos49; + } + } + if (result288 !== null) { + var result286 = [result287, result288]; + } else { + var result286 = null; + pos = savedPos48; } - } - if (result288 !== null) { - var result286 = [result287, result288]; } else { var result286 = null; - this._pos = savedPos48; + pos = savedPos48; } - } else { - var result286 = null; - this._pos = savedPos48; - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result286 - }; - return result286; - }, - - _parse_multiLineComment: function(context) { - var cacheKey = "multiLineComment" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + + + + cache[cacheKey] = { + nextPos: pos, + result: result286 + }; + return result286; } - var pos = this._pos; - - - var savedPos51 = this._pos; - if (this._input.substr(this._pos, 2) === "/*") { - var result294 = "/*"; - this._pos += 2; - } else { - var result294 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("/*")); + function parse_multiLineComment(context) { + var cacheKey = "multiLineComment" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result294 !== null) { - var result295 = []; - var savedPos52 = this._pos; - var savedPos53 = this._pos; - var savedReportMatchFailuresVar7 = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos, 2) === "*/") { - var result300 = "*/"; - this._pos += 2; + + + var savedPos51 = pos; + if (input.substr(pos, 2) === "/*") { + var result294 = "/*"; + pos += 2; } else { - var result300 = null; + var result294 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("*/")); - } - } - context.reportMatchFailures = savedReportMatchFailuresVar7; - if (result300 === null) { - var result298 = ''; - } else { - var result298 = null; - this._pos = savedPos53; - } - if (result298 !== null) { - if (this._input.length > this._pos) { - var result299 = this._input.charAt(this._pos); - this._pos++; - } else { - var result299 = null; - if (context.reportMatchFailures) { - this._matchFailed('any character'); - } - } - if (result299 !== null) { - var result297 = [result298, result299]; - } else { - var result297 = null; - this._pos = savedPos52; + matchFailed(quoteString("/*")); } - } else { - var result297 = null; - this._pos = savedPos52; } - while (result297 !== null) { - result295.push(result297); - var savedPos52 = this._pos; - var savedPos53 = this._pos; + if (result294 !== null) { + var result295 = []; + var savedPos52 = pos; + var savedPos53 = pos; var savedReportMatchFailuresVar7 = context.reportMatchFailures; context.reportMatchFailures = false; - if (this._input.substr(this._pos, 2) === "*/") { + if (input.substr(pos, 2) === "*/") { var result300 = "*/"; - this._pos += 2; + pos += 2; } else { var result300 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("*/")); + matchFailed(quoteString("*/")); } } context.reportMatchFailures = savedReportMatchFailuresVar7; @@ -3223,231 +3091,250 @@ PEG.grammarParser = (function(){ var result298 = ''; } else { var result298 = null; - this._pos = savedPos53; + pos = savedPos53; } if (result298 !== null) { - if (this._input.length > this._pos) { - var result299 = this._input.charAt(this._pos); - this._pos++; + if (input.length > pos) { + var result299 = input.charAt(pos); + pos++; } else { var result299 = null; if (context.reportMatchFailures) { - this._matchFailed('any character'); + matchFailed('any character'); } } if (result299 !== null) { var result297 = [result298, result299]; } else { var result297 = null; - this._pos = savedPos52; + pos = savedPos52; } } else { var result297 = null; - this._pos = savedPos52; + pos = savedPos52; } - } - if (result295 !== null) { - if (this._input.substr(this._pos, 2) === "*/") { - var result296 = "*/"; - this._pos += 2; - } else { - var result296 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("*/")); + while (result297 !== null) { + result295.push(result297); + var savedPos52 = pos; + var savedPos53 = pos; + var savedReportMatchFailuresVar7 = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos, 2) === "*/") { + var result300 = "*/"; + pos += 2; + } else { + var result300 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("*/")); + } + } + context.reportMatchFailures = savedReportMatchFailuresVar7; + if (result300 === null) { + var result298 = ''; + } else { + var result298 = null; + pos = savedPos53; + } + if (result298 !== null) { + if (input.length > pos) { + var result299 = input.charAt(pos); + pos++; + } else { + var result299 = null; + if (context.reportMatchFailures) { + matchFailed('any character'); + } + } + if (result299 !== null) { + var result297 = [result298, result299]; + } else { + var result297 = null; + pos = savedPos52; + } + } else { + var result297 = null; + pos = savedPos52; } } - if (result296 !== null) { - var result293 = [result294, result295, result296]; + if (result295 !== null) { + if (input.substr(pos, 2) === "*/") { + var result296 = "*/"; + pos += 2; + } else { + var result296 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("*/")); + } + } + if (result296 !== null) { + var result293 = [result294, result295, result296]; + } else { + var result293 = null; + pos = savedPos51; + } } else { var result293 = null; - this._pos = savedPos51; + pos = savedPos51; } } else { var result293 = null; - this._pos = savedPos51; + pos = savedPos51; } - } else { - var result293 = null; - this._pos = savedPos51; - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result293 - }; - return result293; - }, - - _parse_eol: function(context) { - var cacheKey = "eol" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + + + + cache[cacheKey] = { + nextPos: pos, + result: result293 + }; + return result293; } - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos, 1) === "\n") { - var result306 = "\n"; - this._pos += 1; - } else { - var result306 = null; - if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\n")); + function parse_eol(context) { + var cacheKey = "eol" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - if (result306 !== null) { - var result301 = result306; - } else { - if (this._input.substr(this._pos, 2) === "\r\n") { - var result305 = "\r\n"; - this._pos += 2; - } else { - var result305 = null; + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos, 1) === "\n") { + var result306 = "\n"; + pos += 1; + } else { + var result306 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\r\n")); + matchFailed(quoteString("\n")); } } - if (result305 !== null) { - var result301 = result305; + if (result306 !== null) { + var result301 = result306; } else { - if (this._input.substr(this._pos, 1) === "\r") { - var result304 = "\r"; - this._pos += 1; + if (input.substr(pos, 2) === "\r\n") { + var result305 = "\r\n"; + pos += 2; } else { - var result304 = null; + var result305 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\r")); + matchFailed(quoteString("\r\n")); } } - if (result304 !== null) { - var result301 = result304; + if (result305 !== null) { + var result301 = result305; } else { - if (this._input.substr(this._pos, 1) === "\u2028") { - var result303 = "\u2028"; - this._pos += 1; + if (input.substr(pos, 1) === "\r") { + var result304 = "\r"; + pos += 1; } else { - var result303 = null; + var result304 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\u2028")); + matchFailed(quoteString("\r")); } } - if (result303 !== null) { - var result301 = result303; + if (result304 !== null) { + var result301 = result304; } else { - if (this._input.substr(this._pos, 1) === "\u2029") { - var result302 = "\u2029"; - this._pos += 1; + if (input.substr(pos, 1) === "\u2028") { + var result303 = "\u2028"; + pos += 1; } else { - var result302 = null; + var result303 = null; if (context.reportMatchFailures) { - this._matchFailed(this._quoteString("\u2029")); + matchFailed(quoteString("\u2028")); } } - if (result302 !== null) { - var result301 = result302; + if (result303 !== null) { + var result301 = result303; } else { - var result301 = null;; + if (input.substr(pos, 1) === "\u2029") { + var result302 = "\u2029"; + pos += 1; + } else { + var result302 = null; + if (context.reportMatchFailures) { + matchFailed(quoteString("\u2029")); + } + } + if (result302 !== null) { + var result301 = result302; + } else { + var result301 = null;; + }; }; }; }; + } + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result301 === null) { + matchFailed("end of line"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result301 }; - } - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result301 === null) { - this._matchFailed("end of line"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result301 - }; - return result301; - }, - - _parse_eolChar: function(context) { - var cacheKey = "eolChar" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; + return result301; } - var pos = this._pos; - - - if (this._input.substr(this._pos).match(/^[\n\r\u2028\u2029]/) !== null) { - var result307 = this._input.charAt(this._pos); - this._pos++; - } else { - var result307 = null; - if (context.reportMatchFailures) { - this._matchFailed("[\\n\\r\\u2028\\u2029]"); + function parse_eolChar(context) { + var cacheKey = "eolChar" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; } - } - - - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result307 - }; - return result307; - }, - - _parse_whitespace: function(context) { - var cacheKey = "whitespace" + '@' + this._pos; - var cachedResult = this._cache[cacheKey]; - if (cachedResult) { - this._pos = cachedResult.nextPos; - return cachedResult.result; - } - - var pos = this._pos; - - var savedReportMatchFailures = context.reportMatchFailures; - context.reportMatchFailures = false; - if (this._input.substr(this._pos).match(/^[   ᠎ -    ]/) !== null) { - var result308 = this._input.charAt(this._pos); - this._pos++; - } else { - var result308 = null; - if (context.reportMatchFailures) { - this._matchFailed("[   ᠎ -    ]"); + + + if (input.substr(pos).match(/^[\n\r\u2028\u2029]/) !== null) { + var result307 = input.charAt(pos); + pos++; + } else { + var result307 = null; + if (context.reportMatchFailures) { + matchFailed("[\\n\\r\\u2028\\u2029]"); + } } + + + + cache[cacheKey] = { + nextPos: pos, + result: result307 + }; + return result307; } - context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result308 === null) { - this._matchFailed("whitespace"); - } - - this._cache[cacheKey] = { - nextPos: this._pos, - result: result308 - }; - return result308; - }, - - /* - * 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.grammarParser.SyntaxError| describing the error. - */ - parse: function(input) { - var that = this; - function initialize() { - that._input = input; - that._pos = 0; - that._rightmostMatchFailuresPos = 0; - that._rightmostMatchFailuresExpected = []; - that._cache = {}; + function parse_whitespace(context) { + var cacheKey = "whitespace" + '@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = context.reportMatchFailures; + context.reportMatchFailures = false; + if (input.substr(pos).match(/^[   ᠎ -    ]/) !== null) { + var result308 = input.charAt(pos); + pos++; + } else { + var result308 = null; + if (context.reportMatchFailures) { + matchFailed("[   ᠎ -    ]"); + } + } + context.reportMatchFailures = savedReportMatchFailures; + if (context.reportMatchFailures && result308 === null) { + matchFailed("whitespace"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result308 + }; + return result308; } function buildErrorMessage() { @@ -3465,10 +3352,10 @@ PEG.grammarParser = (function(){ } } - var expected = buildExpected(that._rightmostMatchFailuresExpected); - var pos = Math.max(that._pos, that._rightmostMatchFailuresPos); - var actual = pos < that._input.length - ? that._quoteString(that._input.charAt(pos)) + var expected = buildExpected(rightmostMatchFailuresExpected); + var actualPos = Math.max(pos, rightmostMatchFailuresPos); + var actual = actualPos < input.length + ? quoteString(input.charAt(actualPos)) : 'end of input'; return 'Expected ' + expected + ' but ' + actual + ' found.'; @@ -3482,13 +3369,11 @@ PEG.grammarParser = (function(){ * enough to prevent it. */ - var input = that._input; - var pos = that._rightmostMatchFailuresPos; var line = 1; var column = 1; var seenCR = false; - for (var i = 0; i < pos; i++) { + for (var i = 0; i < rightmostMatchFailuresPos; i++) { var ch = input.charAt(i); if (ch === '\n') { if (!seenCR) { line++; } @@ -3507,13 +3392,11 @@ PEG.grammarParser = (function(){ return { line: line, column: column }; } - initialize(); - var initialContext = { reportMatchFailures: true }; - var result = this._parse_grammar(initialContext); + var result = parse_grammar(initialContext); /* * The parser is now in one of the following three states: @@ -3521,27 +3404,28 @@ PEG.grammarParser = (function(){ * 1. The parser successfully parsed the whole input. * * - |result !== null| - * - |that._pos === input.length| - * - |that._rightmostMatchFailuresExpected.length| may or may not contain + * - |pos === input.length| + * - |rightmostMatchFailuresExpected.length| may or may not contain * something * * 2. The parser successfully parsed only a part of the input. * * - |result !== null| - * - |that._pos < input.length| - * - |that._rightmostMatchFailuresExpected.length| may or may not contain + * - |pos < input.length| + * - |rightmostMatchFailuresExpected.length| may or may not contain * something * * 3. The parser did not successfully parse any part of the input. * * - |result === null| - * - |that._pos === 0| - * - |that._rightmostMatchFailuresExpected.length| contains at least one failure + * - |pos === 0| + * - |rightmostMatchFailuresExpected.length| contains at least one + * failure * * All code following this comment (including called functions) must * handle these states. */ - if (result === null || this._pos !== input.length) { + if (result === null || pos !== input.length) { var errorPosition = computeErrorPosition(); throw new this.SyntaxError( buildErrorMessage(),