http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/26cca47e/bin/node_modules/xcode/node_modules/pegjs/lib/peg.js ---------------------------------------------------------------------- diff --git a/bin/node_modules/xcode/node_modules/pegjs/lib/peg.js b/bin/node_modules/xcode/node_modules/pegjs/lib/peg.js new file mode 100644 index 0000000..94c9423 --- /dev/null +++ b/bin/node_modules/xcode/node_modules/pegjs/lib/peg.js @@ -0,0 +1,5141 @@ +/* PEG.js 0.6.2 (http://pegjs.majda.cz/) */ + +(function() { + +var undefined; + +var PEG = { + /* PEG.js version. */ + VERSION: "0.6.2", + + /* + * Generates a parser from a specified grammar and returns it. + * + * The grammar must be a string in the format described by the metagramar in + * the parser.pegjs file. + * + * Throws |PEG.parser.SyntaxError| if the grammar contains a syntax error or + * |PEG.GrammarError| if it contains a semantic error. Note that not all + * errors are detected during the generation and some may protrude to the + * generated parser and cause its malfunction. + */ + buildParser: function(grammar) { + return PEG.compiler.compile(PEG.parser.parse(grammar)); + } +}; + +/* Thrown when the grammar contains an error. */ + +PEG.GrammarError = function(message) { + this.name = "PEG.GrammarError"; + this.message = message; +}; + +PEG.GrammarError.prototype = Error.prototype; + +function contains(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 each(array, callback) { + var length = array.length; + for (var i = 0; i < length; i++) { + callback(array[i]); + } +} + +function map(array, callback) { + var result = []; + var length = array.length; + for (var i = 0; i < length; i++) { + result[i] = callback(array[i]); + } + return result; +} + +/* + * Returns a string padded on the left to a desired length with a character. + * + * The code needs to be in sync with th code template in the compilation + * function for "action" nodes. + */ +function padLeft(input, padding, length) { + var result = input; + + var padLength = length - input.length; + for (var i = 0; i < padLength; i++) { + result = padding + result; + } + + return result; +} + +/* + * Returns an escape sequence for given character. Uses \x for characters <= + * 0xFF to save space, \u for the rest. + * + * The code needs to be in sync with th code template in the compilation + * function for "action" nodes. + */ +function escape(ch) { + var charCode = ch.charCodeAt(0); + + if (charCode <= 0xFF) { + var escapeChar = 'x'; + var length = 2; + } else { + var escapeChar = 'u'; + var length = 4; + } + + return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); +} + +/* + * Surrounds the string with quotes and escapes characters inside so that the + * result is a valid JavaScript string. + * + * The code needs to be in sync with th code template in the compilation + * function for "action" nodes. + */ +function quote(s) { + /* + * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string + * literal except for the closing quote character, backslash, carriage return, + * line separator, paragraph separator, and line feed. Any character may + * appear in the form of an escape sequence. + * + * For portability, we also escape escape all non-ASCII characters. + */ + return '"' + s + .replace(/\\/g, '\\\\') // backslash + .replace(/"/g, '\\"') // closing quote character + .replace(/\r/g, '\\r') // carriage return + .replace(/\n/g, '\\n') // line feed + .replace(/[\x80-\uFFFF]/g, escape) // non-ASCII characters + + '"'; +}; + +/* + * Escapes characters inside the string so that it can be used as a list of + * characters in a character class of a regular expression. + */ +function quoteForRegexpClass(s) { + /* + * Based on ECMA-262, 5th ed., 7.8.5 & 15.10.1. + * + * For portability, we also escape escape all non-ASCII characters. + */ + return s + .replace(/\\/g, '\\\\') // backslash + .replace(/\0/g, '\\0') // null, IE needs this + .replace(/\//g, '\\/') // closing slash + .replace(/]/g, '\\]') // closing bracket + .replace(/-/g, '\\-') // dash + .replace(/\r/g, '\\r') // carriage return + .replace(/\n/g, '\\n') // line feed + .replace(/[\x80-\uFFFF]/g, escape) // non-ASCII characters +} + +/* + * Builds a node visitor -- a function which takes a node and any number of + * other parameters, calls an appropriate function according to the node type, + * passes it all its parameters and returns its value. The functions for various + * node types are passed in a parameter to |buildNodeVisitor| as a hash. + */ +function buildNodeVisitor(functions) { + return function(node) { + return functions[node.type].apply(null, arguments); + } +} +PEG.parser = (function(){ + /* Generated by PEG.js 0.6.2 (http://pegjs.majda.cz/). */ + + var result = { + /* + * Parses the input with a generated parser. If the parsing is successfull, + * returns a value explicitly or implicitly specified by the grammar from + * which the parser was generated (see |PEG.buildParser|). If the parsing is + * unsuccessful, throws |PEG.parser.SyntaxError| describing the error. + */ + parse: function(input, startRule) { + var parseFunctions = { + "__": parse___, + "action": parse_action, + "and": parse_and, + "braced": parse_braced, + "bracketDelimitedCharacter": parse_bracketDelimitedCharacter, + "choice": parse_choice, + "class": parse_class, + "classCharacter": parse_classCharacter, + "classCharacterRange": parse_classCharacterRange, + "colon": parse_colon, + "comment": parse_comment, + "digit": parse_digit, + "dot": parse_dot, + "doubleQuotedCharacter": parse_doubleQuotedCharacter, + "doubleQuotedLiteral": parse_doubleQuotedLiteral, + "eol": parse_eol, + "eolChar": parse_eolChar, + "eolEscapeSequence": parse_eolEscapeSequence, + "equals": parse_equals, + "grammar": parse_grammar, + "hexDigit": parse_hexDigit, + "hexEscapeSequence": parse_hexEscapeSequence, + "identifier": parse_identifier, + "initializer": parse_initializer, + "labeled": parse_labeled, + "letter": parse_letter, + "literal": parse_literal, + "lowerCaseLetter": parse_lowerCaseLetter, + "lparen": parse_lparen, + "multiLineComment": parse_multiLineComment, + "nonBraceCharacter": parse_nonBraceCharacter, + "nonBraceCharacters": parse_nonBraceCharacters, + "not": parse_not, + "plus": parse_plus, + "prefixed": parse_prefixed, + "primary": parse_primary, + "question": parse_question, + "rparen": parse_rparen, + "rule": parse_rule, + "semicolon": parse_semicolon, + "sequence": parse_sequence, + "simpleBracketDelimitedCharacter": parse_simpleBracketDelimitedCharacter, + "simpleDoubleQuotedCharacter": parse_simpleDoubleQuotedCharacter, + "simpleEscapeSequence": parse_simpleEscapeSequence, + "simpleSingleQuotedCharacter": parse_simpleSingleQuotedCharacter, + "singleLineComment": parse_singleLineComment, + "singleQuotedCharacter": parse_singleQuotedCharacter, + "singleQuotedLiteral": parse_singleQuotedLiteral, + "slash": parse_slash, + "star": parse_star, + "suffixed": parse_suffixed, + "unicodeEscapeSequence": parse_unicodeEscapeSequence, + "upperCaseLetter": parse_upperCaseLetter, + "whitespace": parse_whitespace, + "zeroEscapeSequence": parse_zeroEscapeSequence + }; + + if (startRule !== undefined) { + if (parseFunctions[startRule] === undefined) { + throw new Error("Invalid rule name: " + quote(startRule) + "."); + } + } else { + startRule = "grammar"; + } + + var pos = 0; + var reportMatchFailures = true; + var rightmostMatchFailuresPos = 0; + var rightmostMatchFailuresExpected = []; + var cache = {}; + + function padLeft(input, padding, length) { + var result = input; + + var padLength = length - input.length; + for (var i = 0; i < padLength; i++) { + result = padding + result; + } + + return result; + } + + function escape(ch) { + var charCode = ch.charCodeAt(0); + + if (charCode <= 0xFF) { + var escapeChar = 'x'; + var length = 2; + } else { + var escapeChar = 'u'; + var length = 4; + } + + return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); + } + + function quote(s) { + /* + * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a + * string literal except for the closing quote character, backslash, + * carriage return, line separator, paragraph separator, and line feed. + * Any character may appear in the form of an escape sequence. + */ + return '"' + s + .replace(/\\/g, '\\\\') // backslash + .replace(/"/g, '\\"') // closing quote character + .replace(/\r/g, '\\r') // carriage return + .replace(/\n/g, '\\n') // line feed + .replace(/[\x80-\uFFFF]/g, escape) // non-ASCII characters + + '"'; + } + + function matchFailed(failure) { + if (pos < rightmostMatchFailuresPos) { + return; + } + + if (pos > rightmostMatchFailuresPos) { + rightmostMatchFailuresPos = pos; + rightmostMatchFailuresExpected = []; + } + + rightmostMatchFailuresExpected.push(failure); + } + + function parse_grammar() { + var cacheKey = 'grammar@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse___(); + if (result3 !== null) { + var result7 = parse_initializer(); + var result4 = result7 !== null ? result7 : ''; + if (result4 !== null) { + var result6 = parse_rule(); + if (result6 !== null) { + var result5 = []; + while (result6 !== null) { + result5.push(result6); + var result6 = parse_rule(); + } + } else { + var result5 = null; + } + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(initializer, rules) { + var rulesConverted = {}; + each(rules, function(rule) { rulesConverted[rule.name] = rule; }); + + return { + type: "grammar", + initializer: initializer !== "" ? initializer : null, + rules: rulesConverted, + startRule: rules[0].name + } + })(result1[1], result1[2]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_initializer() { + var cacheKey = 'initializer@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse_action(); + if (result3 !== null) { + var result5 = parse_semicolon(); + var result4 = result5 !== null ? result5 : ''; + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(code) { + return { + type: "initializer", + code: code + }; + })(result1[0]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rule() { + var cacheKey = 'rule@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse_identifier(); + if (result3 !== null) { + var result10 = parse_literal(); + if (result10 !== null) { + var result4 = result10; + } else { + if (input.substr(pos, 0) === "") { + var result9 = ""; + pos += 0; + } else { + var result9 = null; + if (reportMatchFailures) { + matchFailed("\"\""); + } + } + if (result9 !== null) { + var result4 = result9; + } else { + var result4 = null;; + }; + } + if (result4 !== null) { + var result5 = parse_equals(); + if (result5 !== null) { + var result6 = parse_choice(); + if (result6 !== null) { + var result8 = parse_semicolon(); + var result7 = result8 !== null ? result8 : ''; + if (result7 !== null) { + var result1 = [result3, result4, result5, result6, result7]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(name, displayName, expression) { + return { + type: "rule", + name: name, + displayName: displayName !== "" ? displayName : null, + expression: expression + }; + })(result1[0], result1[1], result1[3]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_choice() { + var cacheKey = 'choice@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse_sequence(); + if (result3 !== null) { + var result4 = []; + var savedPos2 = pos; + var result6 = parse_slash(); + if (result6 !== null) { + var result7 = parse_sequence(); + if (result7 !== null) { + var result5 = [result6, result7]; + } else { + var result5 = null; + pos = savedPos2; + } + } else { + var result5 = null; + pos = savedPos2; + } + while (result5 !== null) { + result4.push(result5); + var savedPos2 = pos; + var result6 = parse_slash(); + if (result6 !== null) { + var result7 = parse_sequence(); + if (result7 !== null) { + var result5 = [result6, result7]; + } else { + var result5 = null; + pos = savedPos2; + } + } else { + var result5 = null; + pos = savedPos2; + } + } + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(head, tail) { + if (tail.length > 0) { + var alternatives = [head].concat(map( + tail, + function(element) { return element[1]; } + )); + return { + type: "choice", + alternatives: alternatives + } + } else { + return head; + } + })(result1[0], result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sequence() { + var cacheKey = 'sequence@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos1 = pos; + var savedPos2 = pos; + var result8 = []; + var result10 = parse_labeled(); + while (result10 !== null) { + result8.push(result10); + var result10 = parse_labeled(); + } + if (result8 !== null) { + var result9 = parse_action(); + if (result9 !== null) { + var result6 = [result8, result9]; + } else { + var result6 = null; + pos = savedPos2; + } + } else { + var result6 = null; + pos = savedPos2; + } + var result7 = result6 !== null + ? (function(elements, code) { + var expression = elements.length != 1 + ? { + type: "sequence", + elements: elements + } + : elements[0]; + return { + type: "action", + expression: expression, + code: code + }; + })(result6[0], result6[1]) + : null; + if (result7 !== null) { + var result5 = result7; + } else { + var result5 = null; + pos = savedPos1; + } + if (result5 !== null) { + var result0 = result5; + } else { + var savedPos0 = pos; + var result2 = []; + var result4 = parse_labeled(); + while (result4 !== null) { + result2.push(result4); + var result4 = parse_labeled(); + } + var result3 = result2 !== null + ? (function(elements) { + return elements.length != 1 + ? { + type: "sequence", + elements: elements + } + : elements[0]; + })(result2) + : null; + if (result3 !== null) { + var result1 = result3; + } else { + var result1 = null; + pos = savedPos0; + } + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_labeled() { + var cacheKey = 'labeled@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result5 = parse_identifier(); + if (result5 !== null) { + var result6 = parse_colon(); + if (result6 !== null) { + var result7 = parse_prefixed(); + if (result7 !== null) { + var result3 = [result5, result6, result7]; + } else { + var result3 = null; + pos = savedPos1; + } + } else { + var result3 = null; + pos = savedPos1; + } + } else { + var result3 = null; + pos = savedPos1; + } + var result4 = result3 !== null + ? (function(label, expression) { + return { + type: "labeled", + label: label, + expression: expression + }; + })(result3[0], result3[2]) + : null; + if (result4 !== null) { + var result2 = result4; + } else { + var result2 = null; + pos = savedPos0; + } + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_prefixed(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_prefixed() { + var cacheKey = 'prefixed@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos6 = pos; + var savedPos7 = pos; + var result20 = parse_and(); + if (result20 !== null) { + var result21 = parse_action(); + if (result21 !== null) { + var result18 = [result20, result21]; + } else { + var result18 = null; + pos = savedPos7; + } + } else { + var result18 = null; + pos = savedPos7; + } + var result19 = result18 !== null + ? (function(code) { + return { + type: "semantic_and", + code: code + }; + })(result18[1]) + : null; + if (result19 !== null) { + var result17 = result19; + } else { + var result17 = null; + pos = savedPos6; + } + if (result17 !== null) { + var result0 = result17; + } else { + var savedPos4 = pos; + var savedPos5 = pos; + var result15 = parse_and(); + if (result15 !== null) { + var result16 = parse_suffixed(); + if (result16 !== null) { + var result13 = [result15, result16]; + } else { + var result13 = null; + pos = savedPos5; + } + } else { + var result13 = null; + pos = savedPos5; + } + var result14 = result13 !== null + ? (function(expression) { + return { + type: "simple_and", + expression: expression + }; + })(result13[1]) + : null; + if (result14 !== null) { + var result12 = result14; + } else { + var result12 = null; + pos = savedPos4; + } + if (result12 !== null) { + var result0 = result12; + } else { + var savedPos2 = pos; + var savedPos3 = pos; + var result10 = parse_not(); + if (result10 !== null) { + var result11 = parse_action(); + if (result11 !== null) { + var result8 = [result10, result11]; + } else { + var result8 = null; + pos = savedPos3; + } + } else { + var result8 = null; + pos = savedPos3; + } + var result9 = result8 !== null + ? (function(code) { + return { + type: "semantic_not", + code: code + }; + })(result8[1]) + : null; + if (result9 !== null) { + var result7 = result9; + } else { + var result7 = null; + pos = savedPos2; + } + if (result7 !== null) { + var result0 = result7; + } else { + var savedPos0 = pos; + var savedPos1 = pos; + var result5 = parse_not(); + if (result5 !== null) { + var result6 = parse_suffixed(); + if (result6 !== null) { + var result3 = [result5, result6]; + } else { + var result3 = null; + pos = savedPos1; + } + } else { + var result3 = null; + pos = savedPos1; + } + var result4 = result3 !== null + ? (function(expression) { + return { + type: "simple_not", + expression: expression + }; + })(result3[1]) + : null; + if (result4 !== null) { + var result2 = result4; + } else { + var result2 = null; + pos = savedPos0; + } + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_suffixed(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_suffixed() { + var cacheKey = 'suffixed@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos4 = pos; + var savedPos5 = pos; + var result15 = parse_primary(); + if (result15 !== null) { + var result16 = parse_question(); + if (result16 !== null) { + var result13 = [result15, result16]; + } else { + var result13 = null; + pos = savedPos5; + } + } else { + var result13 = null; + pos = savedPos5; + } + var result14 = result13 !== null + ? (function(expression) { + return { + type: "optional", + expression: expression + }; + })(result13[0]) + : null; + if (result14 !== null) { + var result12 = result14; + } else { + var result12 = null; + pos = savedPos4; + } + if (result12 !== null) { + var result0 = result12; + } else { + var savedPos2 = pos; + var savedPos3 = pos; + var result10 = parse_primary(); + if (result10 !== null) { + var result11 = parse_star(); + if (result11 !== null) { + var result8 = [result10, result11]; + } else { + var result8 = null; + pos = savedPos3; + } + } else { + var result8 = null; + pos = savedPos3; + } + var result9 = result8 !== null + ? (function(expression) { + return { + type: "zero_or_more", + expression: expression + }; + })(result8[0]) + : null; + if (result9 !== null) { + var result7 = result9; + } else { + var result7 = null; + pos = savedPos2; + } + if (result7 !== null) { + var result0 = result7; + } else { + var savedPos0 = pos; + var savedPos1 = pos; + var result5 = parse_primary(); + if (result5 !== null) { + var result6 = parse_plus(); + if (result6 !== null) { + var result3 = [result5, result6]; + } else { + var result3 = null; + pos = savedPos1; + } + } else { + var result3 = null; + pos = savedPos1; + } + var result4 = result3 !== null + ? (function(expression) { + return { + type: "one_or_more", + expression: expression + }; + })(result3[0]) + : null; + if (result4 !== null) { + var result2 = result4; + } else { + var result2 = null; + pos = savedPos0; + } + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_primary(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_primary() { + var cacheKey = 'primary@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos4 = pos; + var savedPos5 = pos; + var result17 = parse_identifier(); + if (result17 !== null) { + var savedPos6 = pos; + var savedReportMatchFailuresVar0 = reportMatchFailures; + reportMatchFailures = false; + var savedPos7 = pos; + var result23 = parse_literal(); + if (result23 !== null) { + var result20 = result23; + } else { + if (input.substr(pos, 0) === "") { + var result22 = ""; + pos += 0; + } else { + var result22 = null; + if (reportMatchFailures) { + matchFailed("\"\""); + } + } + if (result22 !== null) { + var result20 = result22; + } else { + var result20 = null;; + }; + } + if (result20 !== null) { + var result21 = parse_equals(); + if (result21 !== null) { + var result19 = [result20, result21]; + } else { + var result19 = null; + pos = savedPos7; + } + } else { + var result19 = null; + pos = savedPos7; + } + reportMatchFailures = savedReportMatchFailuresVar0; + if (result19 === null) { + var result18 = ''; + } else { + var result18 = null; + pos = savedPos6; + } + if (result18 !== null) { + var result15 = [result17, result18]; + } else { + var result15 = null; + pos = savedPos5; + } + } else { + var result15 = null; + pos = savedPos5; + } + var result16 = result15 !== null + ? (function(name) { + return { + type: "rule_ref", + name: name + }; + })(result15[0]) + : null; + if (result16 !== null) { + var result14 = result16; + } else { + var result14 = null; + pos = savedPos4; + } + if (result14 !== null) { + var result0 = result14; + } else { + var savedPos3 = pos; + var result12 = parse_literal(); + var result13 = result12 !== null + ? (function(value) { + return { + type: "literal", + value: value + }; + })(result12) + : null; + if (result13 !== null) { + var result11 = result13; + } else { + var result11 = null; + pos = savedPos3; + } + if (result11 !== null) { + var result0 = result11; + } else { + var savedPos2 = pos; + var result9 = parse_dot(); + var result10 = result9 !== null + ? (function() { return { type: "any" }; })() + : null; + if (result10 !== null) { + var result8 = result10; + } else { + var result8 = null; + pos = savedPos2; + } + if (result8 !== null) { + var result0 = result8; + } else { + var result7 = parse_class(); + if (result7 !== null) { + var result0 = result7; + } else { + var savedPos0 = pos; + var savedPos1 = pos; + var result4 = parse_lparen(); + if (result4 !== null) { + var result5 = parse_choice(); + if (result5 !== null) { + var result6 = parse_rparen(); + if (result6 !== null) { + var result2 = [result4, result5, result6]; + } else { + var result2 = null; + pos = savedPos1; + } + } else { + var result2 = null; + pos = savedPos1; + } + } else { + var result2 = null; + pos = savedPos1; + } + var result3 = result2 !== null + ? (function(expression) { return expression; })(result2[1]) + : null; + if (result3 !== null) { + var result1 = result3; + } else { + var result1 = null; + pos = savedPos0; + } + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_action() { + var cacheKey = 'action@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = reportMatchFailures; + reportMatchFailures = false; + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse_braced(); + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(braced) { return braced.substr(1, braced.length - 2); })(result1[0]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + reportMatchFailures = savedReportMatchFailures; + if (reportMatchFailures && result0 === null) { + matchFailed("action"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_braced() { + var cacheKey = 'braced@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "{") { + var result3 = "{"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"{\""); + } + } + if (result3 !== null) { + var result4 = []; + var result8 = parse_braced(); + if (result8 !== null) { + var result6 = result8; + } else { + var result7 = parse_nonBraceCharacter(); + if (result7 !== null) { + var result6 = result7; + } else { + var result6 = null;; + }; + } + while (result6 !== null) { + result4.push(result6); + var result8 = parse_braced(); + if (result8 !== null) { + var result6 = result8; + } else { + var result7 = parse_nonBraceCharacter(); + if (result7 !== null) { + var result6 = result7; + } else { + var result6 = null;; + }; + } + } + if (result4 !== null) { + if (input.substr(pos, 1) === "}") { + var result5 = "}"; + pos += 1; + } else { + var result5 = null; + if (reportMatchFailures) { + matchFailed("\"}\""); + } + } + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(parts) { + return "{" + parts.join("") + "}"; + })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_nonBraceCharacters() { + var cacheKey = 'nonBraceCharacters@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var result3 = parse_nonBraceCharacter(); + if (result3 !== null) { + var result1 = []; + while (result3 !== null) { + result1.push(result3); + var result3 = parse_nonBraceCharacter(); + } + } else { + var result1 = null; + } + var result2 = result1 !== null + ? (function(chars) { return chars.join(""); })(result1) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_nonBraceCharacter() { + var cacheKey = 'nonBraceCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + if (input.substr(pos).match(/^[^{}]/) !== null) { + var result0 = input.charAt(pos); + pos++; + } else { + var result0 = null; + if (reportMatchFailures) { + matchFailed("[^{}]"); + } + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_equals() { + var cacheKey = 'equals@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "=") { + var result3 = "="; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"=\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "="; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_colon() { + var cacheKey = 'colon@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === ":") { + var result3 = ":"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\":\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return ":"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_semicolon() { + var cacheKey = 'semicolon@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === ";") { + var result3 = ";"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\";\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return ";"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_slash() { + var cacheKey = 'slash@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "/") { + var result3 = "/"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"/\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "/"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_and() { + var cacheKey = 'and@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "&") { + var result3 = "&"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"&\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "&"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_not() { + var cacheKey = 'not@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "!") { + var result3 = "!"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"!\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "!"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_question() { + var cacheKey = 'question@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "?") { + var result3 = "?"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"?\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "?"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_star() { + var cacheKey = 'star@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "*") { + var result3 = "*"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"*\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "*"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_plus() { + var cacheKey = 'plus@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "+") { + var result3 = "+"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"+\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "+"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_lparen() { + var cacheKey = 'lparen@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "(") { + var result3 = "("; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"(\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "("; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rparen() { + var cacheKey = 'rparen@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === ")") { + var result3 = ")"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\")\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return ")"; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_dot() { + var cacheKey = 'dot@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === ".") { + var result3 = "."; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\".\""); + } + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function() { return "."; })() + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_identifier() { + var cacheKey = 'identifier@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = reportMatchFailures; + reportMatchFailures = false; + var savedPos0 = pos; + var savedPos1 = pos; + var result13 = parse_letter(); + if (result13 !== null) { + var result3 = result13; + } else { + if (input.substr(pos, 1) === "_") { + var result12 = "_"; + pos += 1; + } else { + var result12 = null; + if (reportMatchFailures) { + matchFailed("\"_\""); + } + } + if (result12 !== null) { + var result3 = result12; + } else { + if (input.substr(pos, 1) === "$") { + var result11 = "$"; + pos += 1; + } else { + var result11 = null; + if (reportMatchFailures) { + matchFailed("\"$\""); + } + } + if (result11 !== null) { + var result3 = result11; + } else { + var result3 = null;; + }; + }; + } + if (result3 !== null) { + var result4 = []; + var result10 = parse_letter(); + if (result10 !== null) { + var result6 = result10; + } else { + var result9 = parse_digit(); + if (result9 !== null) { + var result6 = result9; + } else { + if (input.substr(pos, 1) === "_") { + var result8 = "_"; + pos += 1; + } else { + var result8 = null; + if (reportMatchFailures) { + matchFailed("\"_\""); + } + } + if (result8 !== null) { + var result6 = result8; + } else { + if (input.substr(pos, 1) === "$") { + var result7 = "$"; + pos += 1; + } else { + var result7 = null; + if (reportMatchFailures) { + matchFailed("\"$\""); + } + } + if (result7 !== null) { + var result6 = result7; + } else { + var result6 = null;; + }; + }; + }; + } + while (result6 !== null) { + result4.push(result6); + var result10 = parse_letter(); + if (result10 !== null) { + var result6 = result10; + } else { + var result9 = parse_digit(); + if (result9 !== null) { + var result6 = result9; + } else { + if (input.substr(pos, 1) === "_") { + var result8 = "_"; + pos += 1; + } else { + var result8 = null; + if (reportMatchFailures) { + matchFailed("\"_\""); + } + } + if (result8 !== null) { + var result6 = result8; + } else { + if (input.substr(pos, 1) === "$") { + var result7 = "$"; + pos += 1; + } else { + var result7 = null; + if (reportMatchFailures) { + matchFailed("\"$\""); + } + } + if (result7 !== null) { + var result6 = result7; + } else { + var result6 = null;; + }; + }; + }; + } + } + if (result4 !== null) { + var result5 = parse___(); + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(head, tail) { + return head + tail.join(""); + })(result1[0], result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + reportMatchFailures = savedReportMatchFailures; + if (reportMatchFailures && result0 === null) { + matchFailed("identifier"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_literal() { + var cacheKey = 'literal@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = reportMatchFailures; + reportMatchFailures = false; + var savedPos0 = pos; + var savedPos1 = pos; + var result6 = parse_doubleQuotedLiteral(); + if (result6 !== null) { + var result3 = result6; + } else { + var result5 = parse_singleQuotedLiteral(); + if (result5 !== null) { + var result3 = result5; + } else { + var result3 = null;; + }; + } + if (result3 !== null) { + var result4 = parse___(); + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(literal) { return literal; })(result1[0]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + reportMatchFailures = savedReportMatchFailures; + if (reportMatchFailures && result0 === null) { + matchFailed("literal"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_doubleQuotedLiteral() { + var cacheKey = 'doubleQuotedLiteral@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "\"") { + var result3 = "\""; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"\\\"\""); + } + } + if (result3 !== null) { + var result4 = []; + var result6 = parse_doubleQuotedCharacter(); + while (result6 !== null) { + result4.push(result6); + var result6 = parse_doubleQuotedCharacter(); + } + if (result4 !== null) { + if (input.substr(pos, 1) === "\"") { + var result5 = "\""; + pos += 1; + } else { + var result5 = null; + if (reportMatchFailures) { + matchFailed("\"\\\"\""); + } + } + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(chars) { return chars.join(""); })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_doubleQuotedCharacter() { + var cacheKey = 'doubleQuotedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result6 = parse_simpleDoubleQuotedCharacter(); + if (result6 !== null) { + var result0 = result6; + } else { + var result5 = parse_simpleEscapeSequence(); + if (result5 !== null) { + var result0 = result5; + } else { + var result4 = parse_zeroEscapeSequence(); + if (result4 !== null) { + var result0 = result4; + } else { + var result3 = parse_hexEscapeSequence(); + if (result3 !== null) { + var result0 = result3; + } else { + var result2 = parse_unicodeEscapeSequence(); + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_eolEscapeSequence(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_simpleDoubleQuotedCharacter() { + var cacheKey = 'simpleDoubleQuotedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var savedPos2 = pos; + var savedReportMatchFailuresVar0 = reportMatchFailures; + reportMatchFailures = false; + if (input.substr(pos, 1) === "\"") { + var result8 = "\""; + pos += 1; + } else { + var result8 = null; + if (reportMatchFailures) { + matchFailed("\"\\\"\""); + } + } + if (result8 !== null) { + var result5 = result8; + } else { + if (input.substr(pos, 1) === "\\") { + var result7 = "\\"; + pos += 1; + } else { + var result7 = null; + if (reportMatchFailures) { + matchFailed("\"\\\\\""); + } + } + if (result7 !== null) { + var result5 = result7; + } else { + var result6 = parse_eolChar(); + if (result6 !== null) { + var result5 = result6; + } else { + var result5 = null;; + }; + }; + } + reportMatchFailures = savedReportMatchFailuresVar0; + if (result5 === null) { + var result3 = ''; + } else { + var result3 = null; + pos = savedPos2; + } + if (result3 !== null) { + if (input.length > pos) { + var result4 = input.charAt(pos); + pos++; + } else { + var result4 = null; + if (reportMatchFailures) { + matchFailed('any character'); + } + } + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(char_) { return char_; })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_singleQuotedLiteral() { + var cacheKey = 'singleQuotedLiteral@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "'") { + var result3 = "'"; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"'\""); + } + } + if (result3 !== null) { + var result4 = []; + var result6 = parse_singleQuotedCharacter(); + while (result6 !== null) { + result4.push(result6); + var result6 = parse_singleQuotedCharacter(); + } + if (result4 !== null) { + if (input.substr(pos, 1) === "'") { + var result5 = "'"; + pos += 1; + } else { + var result5 = null; + if (reportMatchFailures) { + matchFailed("\"'\""); + } + } + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(chars) { return chars.join(""); })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_singleQuotedCharacter() { + var cacheKey = 'singleQuotedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result6 = parse_simpleSingleQuotedCharacter(); + if (result6 !== null) { + var result0 = result6; + } else { + var result5 = parse_simpleEscapeSequence(); + if (result5 !== null) { + var result0 = result5; + } else { + var result4 = parse_zeroEscapeSequence(); + if (result4 !== null) { + var result0 = result4; + } else { + var result3 = parse_hexEscapeSequence(); + if (result3 !== null) { + var result0 = result3; + } else { + var result2 = parse_unicodeEscapeSequence(); + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_eolEscapeSequence(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_simpleSingleQuotedCharacter() { + var cacheKey = 'simpleSingleQuotedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var savedPos2 = pos; + var savedReportMatchFailuresVar0 = reportMatchFailures; + reportMatchFailures = false; + if (input.substr(pos, 1) === "'") { + var result8 = "'"; + pos += 1; + } else { + var result8 = null; + if (reportMatchFailures) { + matchFailed("\"'\""); + } + } + if (result8 !== null) { + var result5 = result8; + } else { + if (input.substr(pos, 1) === "\\") { + var result7 = "\\"; + pos += 1; + } else { + var result7 = null; + if (reportMatchFailures) { + matchFailed("\"\\\\\""); + } + } + if (result7 !== null) { + var result5 = result7; + } else { + var result6 = parse_eolChar(); + if (result6 !== null) { + var result5 = result6; + } else { + var result5 = null;; + }; + }; + } + reportMatchFailures = savedReportMatchFailuresVar0; + if (result5 === null) { + var result3 = ''; + } else { + var result3 = null; + pos = savedPos2; + } + if (result3 !== null) { + if (input.length > pos) { + var result4 = input.charAt(pos); + pos++; + } else { + var result4 = null; + if (reportMatchFailures) { + matchFailed('any character'); + } + } + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(char_) { return char_; })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_class() { + var cacheKey = 'class@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var savedReportMatchFailures = reportMatchFailures; + reportMatchFailures = false; + var savedPos0 = pos; + var savedPos1 = pos; + if (input.substr(pos, 1) === "[") { + var result3 = "["; + pos += 1; + } else { + var result3 = null; + if (reportMatchFailures) { + matchFailed("\"[\""); + } + } + if (result3 !== null) { + if (input.substr(pos, 1) === "^") { + var result11 = "^"; + pos += 1; + } else { + var result11 = null; + if (reportMatchFailures) { + matchFailed("\"^\""); + } + } + var result4 = result11 !== null ? result11 : ''; + if (result4 !== null) { + var result5 = []; + var result10 = parse_classCharacterRange(); + if (result10 !== null) { + var result8 = result10; + } else { + var result9 = parse_classCharacter(); + if (result9 !== null) { + var result8 = result9; + } else { + var result8 = null;; + }; + } + while (result8 !== null) { + result5.push(result8); + var result10 = parse_classCharacterRange(); + if (result10 !== null) { + var result8 = result10; + } else { + var result9 = parse_classCharacter(); + if (result9 !== null) { + var result8 = result9; + } else { + var result8 = null;; + }; + } + } + if (result5 !== null) { + if (input.substr(pos, 1) === "]") { + var result6 = "]"; + pos += 1; + } else { + var result6 = null; + if (reportMatchFailures) { + matchFailed("\"]\""); + } + } + if (result6 !== null) { + var result7 = parse___(); + if (result7 !== null) { + var result1 = [result3, result4, result5, result6, result7]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(inverted, parts) { + var partsConverted = map(parts, function(part) { return part.data; }); + var rawText = "[" + + inverted + + 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 + }; + })(result1[1], result1[2]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + reportMatchFailures = savedReportMatchFailures; + if (reportMatchFailures && result0 === null) { + matchFailed("character class"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_classCharacterRange() { + var cacheKey = 'classCharacterRange@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var result3 = parse_classCharacter(); + if (result3 !== null) { + if (input.substr(pos, 1) === "-") { + var result4 = "-"; + pos += 1; + } else { + var result4 = null; + if (reportMatchFailures) { + matchFailed("\"-\""); + } + } + if (result4 !== null) { + var result5 = parse_classCharacter(); + if (result5 !== null) { + var result1 = [result3, result4, result5]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(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 + } + })(result1[0], result1[2]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_classCharacter() { + var cacheKey = 'classCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var result1 = parse_bracketDelimitedCharacter(); + var result2 = result1 !== null + ? (function(char_) { + return { + data: char_, + // FIXME: Get the raw text from the input directly. + rawText: quoteForRegexpClass(char_) + }; + })(result1) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bracketDelimitedCharacter() { + var cacheKey = 'bracketDelimitedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var result6 = parse_simpleBracketDelimitedCharacter(); + if (result6 !== null) { + var result0 = result6; + } else { + var result5 = parse_simpleEscapeSequence(); + if (result5 !== null) { + var result0 = result5; + } else { + var result4 = parse_zeroEscapeSequence(); + if (result4 !== null) { + var result0 = result4; + } else { + var result3 = parse_hexEscapeSequence(); + if (result3 !== null) { + var result0 = result3; + } else { + var result2 = parse_unicodeEscapeSequence(); + if (result2 !== null) { + var result0 = result2; + } else { + var result1 = parse_eolEscapeSequence(); + if (result1 !== null) { + var result0 = result1; + } else { + var result0 = null;; + }; + }; + }; + }; + }; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_simpleBracketDelimitedCharacter() { + var cacheKey = 'simpleBracketDelimitedCharacter@' + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + + var savedPos0 = pos; + var savedPos1 = pos; + var savedPos2 = pos; + var savedReportMatchFailuresVar0 = reportMatchFailures; + reportMatchFailures = false; + if (input.substr(pos, 1) === "]") { + var result8 = "]"; + pos += 1; + } else { + var result8 = null; + if (reportMatchFailures) { + matchFailed("\"]\""); + } + } + if (result8 !== null) { + var result5 = result8; + } else { + if (input.substr(pos, 1) === "\\") { + var result7 = "\\"; + pos += 1; + } else { + var result7 = null; + if (reportMatchFailures) { + matchFailed("\"\\\\\""); + } + } + if (result7 !== null) { + var result5 = result7; + } else { + var result6 = parse_eolChar(); + if (result6 !== null) { + var result5 = result6; + } else { + var result5 = null;; + }; + }; + } + reportMatchFailures = savedReportMatchFailuresVar0; + if (result5 === null) { + var result3 = ''; + } else { + var result3 = null; + pos = savedPos2; + } + if (result3 !== null) { + if (input.length > pos) { + var result4 = input.charAt(pos); + pos++; + } else { + var result4 = null; + if (reportMatchFailures) { + matchFailed('any character'); + } + } + if (result4 !== null) { + var result1 = [result3, result4]; + } else { + var result1 = null; + pos = savedPos1; + } + } else { + var result1 = null; + pos = savedPos1; + } + var result2 = result1 !== null + ? (function(char_) { return char_; })(result1[1]) + : null; + if (result2 !== null) { + var result0 = result2; + } else { + var result0 = null; + pos = savedPos0; + } + + + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_simpleEscapeSequence() { + var cacheKey = 'simpleEscapeS
<TRUNCATED> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
