UNPKG

odata-parser

Version:
1,646 lines (1,584 loc) 165 kB
module.exports = (function(){ /* * Generated by PEG.js 0.7.0. * * http://pegjs.majda.cz/ */ 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 control and non-ASCII * characters. Note that "\0" and "\v" escape sequences are not used * because JSHint does not like the first and IE the second. */ return '"' + s .replace(/\\/g, '\\\\') // backslash .replace(/"/g, '\\"') // closing quote character .replace(/\x08/g, '\\b') // backspace .replace(/\t/g, '\\t') // horizontal tab .replace(/\n/g, '\\n') // line feed .replace(/\f/g, '\\f') // form feed .replace(/\r/g, '\\r') // carriage return .replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape) + '"'; } 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 = { "WSP": parse_WSP, "DIGIT": parse_DIGIT, "INT": parse_INT, "HEXDIG": parse_HEXDIG, "HEXDIG2": parse_HEXDIG2, "HEXDIG4": parse_HEXDIG4, "HEXDIG8": parse_HEXDIG8, "SQUOTE": parse_SQUOTE, "primitiveLiteral": parse_primitiveLiteral, "null": parse_null, "binary": parse_binary, "boolean": parse_boolean, "byte": parse_byte, "dateTime": parse_dateTime, "dateTimeOffset": parse_dateTimeOffset, "dateTimeBodyA": parse_dateTimeBodyA, "dateTimeBodyB": parse_dateTimeBodyB, "dateTimeBodyC": parse_dateTimeBodyC, "dateTimeBodyD": parse_dateTimeBodyD, "dateTimeBody": parse_dateTimeBody, "dateTimeOffsetBody": parse_dateTimeOffsetBody, "decimal": parse_decimal, "double": parse_double, "guid": parse_guid, "int32": parse_int32, "int64": parse_int64, "sbyte": parse_sbyte, "single": parse_single, "string": parse_string, "oneToNine": parse_oneToNine, "zeroToTwelve": parse_zeroToTwelve, "zeroToThirteen": parse_zeroToThirteen, "zeroToSixty": parse_zeroToSixty, "zeroToThirtyOne": parse_zeroToThirtyOne, "zeroToTwentyFour": parse_zeroToTwentyFour, "year": parse_year, "sign": parse_sign, "nan": parse_nan, "negativeInfinity": parse_negativeInfinity, "positiveInfinity": parse_positiveInfinity, "nanInfinity": parse_nanInfinity, "unreserved": parse_unreserved, "validstring": parse_validstring, "escapedQuote": parse_escapedQuote, "identifierPart": parse_identifierPart, "identifier": parse_identifier, "callback": parse_callback, "top": parse_top, "expand": parse_expand, "expandList": parse_expandList, "skip": parse_skip, "format": parse_format, "inlinecount": parse_inlinecount, "orderby": parse_orderby, "orderbyList": parse_orderbyList, "select": parse_select, "identifierPathParts": parse_identifierPathParts, "identifierPath": parse_identifierPath, "selectList": parse_selectList, "filter": parse_filter, "filterExpr": parse_filterExpr, "booleanFunctions2Args": parse_booleanFunctions2Args, "booleanFunc": parse_booleanFunc, "otherFunctions1Arg": parse_otherFunctions1Arg, "otherFunc1": parse_otherFunc1, "otherFunctions2Arg": parse_otherFunctions2Arg, "otherFunc2": parse_otherFunc2, "cond": parse_cond, "part": parse_part, "op": parse_op, "unsupported": parse_unsupported, "expList": parse_expList, "exp": parse_exp, "query": parse_query }; if (startRule !== undefined) { if (parseFunctions[startRule] === undefined) { throw new Error("Invalid rule name: " + quote(startRule) + "."); } } else { startRule = "query"; } var pos = 0; var reportFailures = 0; var rightmostFailuresPos = 0; var rightmostFailuresExpected = []; 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); var escapeChar; var length; if (charCode <= 0xFF) { escapeChar = 'x'; length = 2; } else { escapeChar = 'u'; length = 4; } return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); } function matchFailed(failure) { if (pos < rightmostFailuresPos) { return; } if (pos > rightmostFailuresPos) { rightmostFailuresPos = pos; rightmostFailuresExpected = []; } rightmostFailuresExpected.push(failure); } function parse_WSP() { var result0; if (input.charCodeAt(pos) === 32) { result0 = " "; pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("\" \""); } } return result0; } function parse_DIGIT() { var result0; if (/^[0-9]/.test(input.charAt(pos))) { result0 = input.charAt(pos); pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("[0-9]"); } } return result0; } function parse_INT() { var result0, result1; var pos0; pos0 = pos; result1 = parse_DIGIT(); if (result1 !== null) { result0 = []; while (result1 !== null) { result0.push(result1); result1 = parse_DIGIT(); } } else { result0 = null; } if (result0 !== null) { result0 = (function(offset, a) { return a.join(''); })(pos0, result0); } if (result0 === null) { pos = pos0; } return result0; } function parse_HEXDIG() { var result0; if (/^[0-9a-fA-F]/.test(input.charAt(pos))) { result0 = input.charAt(pos); pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("[0-9a-fA-F]"); } } return result0; } function parse_HEXDIG2() { var result0, result1; var pos0; pos0 = pos; result0 = parse_HEXDIG(); if (result0 !== null) { result1 = parse_HEXDIG(); if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_HEXDIG4() { var result0, result1; var pos0; pos0 = pos; result0 = parse_HEXDIG2(); if (result0 !== null) { result1 = parse_HEXDIG2(); if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_HEXDIG8() { var result0, result1; var pos0; pos0 = pos; result0 = parse_HEXDIG4(); if (result0 !== null) { result1 = parse_HEXDIG8(); if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_SQUOTE() { var result0; if (input.substr(pos, 4) === "%x27") { result0 = "%x27"; pos += 4; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"%x27\""); } } if (result0 === null) { if (input.charCodeAt(pos) === 39) { result0 = "'"; pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"'\""); } } } return result0; } function parse_primitiveLiteral() { var result0; result0 = parse_null(); if (result0 === null) { result0 = parse_binary(); if (result0 === null) { result0 = parse_dateTime(); if (result0 === null) { result0 = parse_dateTimeOffset(); if (result0 === null) { result0 = parse_guid(); if (result0 === null) { result0 = parse_double(); if (result0 === null) { result0 = parse_decimal(); if (result0 === null) { result0 = parse_single(); if (result0 === null) { result0 = parse_int32(); if (result0 === null) { result0 = parse_int64(); if (result0 === null) { result0 = parse_byte(); if (result0 === null) { result0 = parse_sbyte(); if (result0 === null) { result0 = parse_boolean(); if (result0 === null) { result0 = parse_string(); } } } } } } } } } } } } } return result0; } function parse_null() { var result0, result1, result2, result3; var pos0, pos1; pos0 = pos; if (input.substr(pos, 4) === "null") { result0 = "null"; pos += 4; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"null\""); } } if (result0 !== null) { pos1 = pos; if (input.charCodeAt(pos) === 39) { result1 = "'"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"'\""); } } if (result1 !== null) { result2 = parse_identifier(); if (result2 !== null) { if (input.charCodeAt(pos) === 39) { result3 = "'"; pos++; } else { result3 = null; if (reportFailures === 0) { matchFailed("\"'\""); } } if (result3 !== null) { result1 = [result1, result2, result3]; } else { result1 = null; pos = pos1; } } else { result1 = null; pos = pos1; } } else { result1 = null; pos = pos1; } result1 = result1 !== null ? result1 : ""; if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_binary() { var result0, result1, result2, result3, result4; var pos0; pos0 = pos; if (input.substr(pos, 4) === "%d88") { result0 = "%d88"; pos += 4; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"%d88\""); } } if (result0 === null) { if (input.substr(pos, 6) === "binary") { result0 = "binary"; pos += 6; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"binary\""); } } } if (result0 !== null) { result1 = parse_SQUOTE(); if (result1 !== null) { result2 = parse_HEXDIG(); if (result2 !== null) { result3 = parse_HEXDIG(); if (result3 !== null) { result4 = parse_SQUOTE(); if (result4 !== null) { result0 = [result0, result1, result2, result3, result4]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_boolean() { var result0; var pos0; pos0 = pos; if (input.substr(pos, 4) === "true") { result0 = "true"; pos += 4; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"true\""); } } if (result0 !== null) { result0 = (function(offset) { return true; })(pos0); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; if (input.charCodeAt(pos) === 49) { result0 = "1"; pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"1\""); } } if (result0 !== null) { result0 = (function(offset) { return true; })(pos0); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; if (input.substr(pos, 5) === "false") { result0 = "false"; pos += 5; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"false\""); } } if (result0 !== null) { result0 = (function(offset) { return false; })(pos0); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; if (input.charCodeAt(pos) === 48) { result0 = "0"; pos++; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"0\""); } } if (result0 !== null) { result0 = (function(offset) { return false; })(pos0); } if (result0 === null) { pos = pos0; } } } } return result0; } function parse_byte() { var result0, result1, result2; var pos0; pos0 = pos; result0 = parse_DIGIT(); if (result0 !== null) { result1 = parse_DIGIT(); if (result1 !== null) { result2 = parse_DIGIT(); if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } return result0; } function parse_dateTime() { var result0, result1, result2, result3; var pos0, pos1; pos0 = pos; pos1 = pos; if (input.substr(pos, 8) === "datetime") { result0 = "datetime"; pos += 8; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"datetime\""); } } if (result0 !== null) { result1 = parse_SQUOTE(); if (result1 !== null) { result2 = parse_dateTimeBody(); if (result2 !== null) { result3 = parse_SQUOTE(); if (result3 !== null) { result0 = [result0, result1, result2, result3]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a) { return new Date(a); })(pos0, result0[2]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeOffset() { var result0, result1, result2, result3; var pos0, pos1; pos0 = pos; pos1 = pos; if (input.substr(pos, 14) === "datetimeoffset") { result0 = "datetimeoffset"; pos += 14; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"datetimeoffset\""); } } if (result0 !== null) { result1 = parse_SQUOTE(); if (result1 !== null) { result2 = parse_dateTimeOffsetBody(); if (result2 !== null) { result3 = parse_SQUOTE(); if (result3 !== null) { result0 = [result0, result1, result2, result3]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a) { return new Date(a); })(pos0, result0[2]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeBodyA() { var result0, result1, result2, result3, result4, result5, result6, result7, result8; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_year(); if (result0 !== null) { if (input.charCodeAt(pos) === 45) { result1 = "-"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"-\""); } } if (result1 !== null) { result2 = parse_zeroToTwelve(); if (result2 !== null) { if (input.charCodeAt(pos) === 45) { result3 = "-"; pos++; } else { result3 = null; if (reportFailures === 0) { matchFailed("\"-\""); } } if (result3 !== null) { result4 = parse_zeroToThirtyOne(); if (result4 !== null) { if (input.charCodeAt(pos) === 84) { result5 = "T"; pos++; } else { result5 = null; if (reportFailures === 0) { matchFailed("\"T\""); } } if (result5 !== null) { result6 = parse_zeroToTwentyFour(); if (result6 !== null) { if (input.charCodeAt(pos) === 58) { result7 = ":"; pos++; } else { result7 = null; if (reportFailures === 0) { matchFailed("\":\""); } } if (result7 !== null) { result8 = parse_zeroToSixty(); if (result8 !== null) { result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c, d, e) { return a + '-' + b + '-' + c + "T" + d + ":" + e; })(pos0, result0[0], result0[2], result0[4], result0[6], result0[8]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeBodyB() { var result0, result1, result2; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_dateTimeBodyA(); if (result0 !== null) { if (input.charCodeAt(pos) === 58) { result1 = ":"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\":\""); } } if (result1 !== null) { result2 = parse_zeroToSixty(); if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b) { return a + ":" + b; })(pos0, result0[0], result0[2]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeBodyC() { var result0, result1, result2; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_dateTimeBodyB(); if (result0 !== null) { if (input.charCodeAt(pos) === 46) { result1 = "."; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\".\""); } } if (result1 !== null) { result2 = parse_INT(); if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b) { return a + "." + b; })(pos0, result0[0], result0[2]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeBodyD() { var result0, result1, result2, result3, result4; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_dateTimeBodyC(); if (result0 !== null) { if (input.charCodeAt(pos) === 45) { result1 = "-"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"-\""); } } if (result1 !== null) { result2 = parse_zeroToTwentyFour(); if (result2 !== null) { if (input.charCodeAt(pos) === 58) { result3 = ":"; pos++; } else { result3 = null; if (reportFailures === 0) { matchFailed("\":\""); } } if (result3 !== null) { result4 = parse_zeroToSixty(); if (result4 !== null) { result0 = [result0, result1, result2, result3, result4]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c) { return a + "-" + b + ":" + c; })(pos0, result0[0], result0[2], result0[4]); } if (result0 === null) { pos = pos0; } return result0; } function parse_dateTimeBody() { var result0; result0 = parse_dateTimeBodyD(); if (result0 === null) { result0 = parse_dateTimeBodyC(); if (result0 === null) { result0 = parse_dateTimeBodyB(); if (result0 === null) { result0 = parse_dateTimeBodyA(); } } } return result0; } function parse_dateTimeOffsetBody() { var result0, result1, result2, result3, result4; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_dateTimeBody(); if (result0 !== null) { if (input.charCodeAt(pos) === 90) { result1 = "Z"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"Z\""); } } if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a) { return a + "Z"; })(pos0, result0[0]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_dateTimeBody(); if (result0 !== null) { result1 = parse_sign(); if (result1 !== null) { result2 = parse_zeroToThirteen(); if (result2 !== null) { if (input.substr(pos, 3) === ":00") { result3 = ":00"; pos += 3; } else { result3 = null; if (reportFailures === 0) { matchFailed("\":00\""); } } if (result3 !== null) { result0 = [result0, result1, result2, result3]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c) { return a + b + c + ":00"; })(pos0, result0[0], result0[1], result0[2]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_dateTimeBody(); if (result0 !== null) { result1 = parse_sign(); if (result1 !== null) { result2 = parse_zeroToThirteen(); if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c) { return a + b + c; })(pos0, result0[0], result0[1], result0[2]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_dateTimeBody(); if (result0 !== null) { result1 = parse_sign(); if (result1 !== null) { result2 = parse_zeroToTwelve(); if (result2 !== null) { if (input.charCodeAt(pos) === 58) { result3 = ":"; pos++; } else { result3 = null; if (reportFailures === 0) { matchFailed("\":\""); } } if (result3 !== null) { result4 = parse_zeroToSixty(); if (result4 !== null) { result0 = [result0, result1, result2, result3, result4]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c, d) { return a + b + c + ":" + d; })(pos0, result0[0], result0[1], result0[2], result0[4]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_dateTimeBody(); if (result0 !== null) { result1 = parse_sign(); if (result1 !== null) { result2 = parse_zeroToTwelve(); if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, a, b, c) { return a + b + c; })(pos0, result0[0], result0[1], result0[2]); } if (result0 === null) { pos = pos0; } } } } } return result0; } function parse_decimal() { var result0, result1, result2, result3, result4; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_sign(); result0 = result0 !== null ? result0 : ""; if (result0 !== null) { result2 = parse_DIGIT(); if (result2 !== null) { result1 = []; while (result2 !== null) { result1.push(result2); result2 = parse_DIGIT(); } } else { result1 = null; } if (result1 !== null) { if (input.charCodeAt(pos) === 46) { result2 = "."; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\".\""); } } if (result2 !== null) { result4 = parse_DIGIT(); if (result4 !== null) { result3 = []; while (result4 !== null) { result3.push(result4); result4 = parse_DIGIT(); } } else { result3 = null; } if (result3 !== null) { if (input.charCodeAt(pos) === 77) { result4 = "M"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"M\""); } } if (result4 === null) { if (input.charCodeAt(pos) === 109) { result4 = "m"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"m\""); } } } result4 = result4 !== null ? result4 : ""; if (result4 !== null) { result0 = [result0, result1, result2, result3, result4]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, sign, digit, decimal) { return sign + digit.join('') + '.' + decimal.join(''); })(pos0, result0[0], result0[1], result0[3]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_sign(); result0 = result0 !== null ? result0 : ""; if (result0 !== null) { result2 = parse_DIGIT(); if (result2 !== null) { result1 = []; while (result2 !== null) { result1.push(result2); result2 = parse_DIGIT(); } } else { result1 = null; } if (result1 !== null) { if (input.charCodeAt(pos) === 77) { result2 = "M"; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\"M\""); } } if (result2 === null) { if (input.charCodeAt(pos) === 109) { result2 = "m"; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\"m\""); } } } if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, sign, digit) { return sign + digit.join(''); })(pos0, result0[0], result0[1]); } if (result0 === null) { pos = pos0; } } return result0; } function parse_double() { var result0, result1, result2, result3, result4, result5, result6, result7; var pos0, pos1; pos0 = pos; pos1 = pos; result0 = parse_sign(); result0 = result0 !== null ? result0 : ""; if (result0 !== null) { result1 = parse_DIGIT(); if (result1 !== null) { if (input.charCodeAt(pos) === 46) { result2 = "."; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\".\""); } } if (result2 !== null) { result4 = parse_DIGIT(); if (result4 !== null) { result3 = []; while (result4 !== null) { result3.push(result4); result4 = parse_DIGIT(); } } else { result3 = null; } if (result3 !== null) { if (input.charCodeAt(pos) === 101) { result4 = "e"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"e\""); } } if (result4 === null) { if (input.charCodeAt(pos) === 69) { result4 = "E"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"E\""); } } } if (result4 !== null) { result5 = parse_sign(); result5 = result5 !== null ? result5 : ""; if (result5 !== null) { result7 = parse_DIGIT(); if (result7 !== null) { result6 = []; while (result7 !== null) { result6.push(result7); result7 = parse_DIGIT(); } } else { result6 = null; } if (result6 !== null) { if (input.charCodeAt(pos) === 68) { result7 = "D"; pos++; } else { result7 = null; if (reportFailures === 0) { matchFailed("\"D\""); } } if (result7 === null) { if (input.charCodeAt(pos) === 100) { result7 = "d"; pos++; } else { result7 = null; if (reportFailures === 0) { matchFailed("\"d\""); } } } result7 = result7 !== null ? result7 : ""; if (result7 !== null) { result0 = [result0, result1, result2, result3, result4, result5, result6, result7]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, sign, digit, decimal, signexp, exp) { return sign + digit + '.' + decimal.join('') + 'e' + signexp + exp.join(''); })(pos0, result0[0], result0[1], result0[3], result0[5], result0[6]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_sign(); result0 = result0 !== null ? result0 : ""; if (result0 !== null) { result2 = parse_DIGIT(); if (result2 !== null) { result1 = []; while (result2 !== null) { result1.push(result2); result2 = parse_DIGIT(); } } else { result1 = null; } if (result1 !== null) { if (input.charCodeAt(pos) === 46) { result2 = "."; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\".\""); } } if (result2 !== null) { result4 = parse_DIGIT(); if (result4 !== null) { result3 = []; while (result4 !== null) { result3.push(result4); result4 = parse_DIGIT(); } } else { result3 = null; } if (result3 !== null) { if (input.charCodeAt(pos) === 68) { result4 = "D"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"D\""); } } if (result4 === null) { if (input.charCodeAt(pos) === 100) { result4 = "d"; pos++; } else { result4 = null; if (reportFailures === 0) { matchFailed("\"d\""); } } } if (result4 !== null) { result0 = [result0, result1, result2, result3, result4]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, sign, digit, decimal) { return sign + digit.join('') + '.' + decimal.join(''); })(pos0, result0[0], result0[1], result0[3]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; pos1 = pos; result0 = parse_sign(); result0 = result0 !== null ? result0 : ""; if (result0 !== null) { result2 = parse_DIGIT(); if (result2 !== null) { result1 = []; while (result2 !== null) { result1.push(result2); result2 = parse_DIGIT(); } } else { result1 = null; } if (result1 !== null) { if (input.charCodeAt(pos) === 68) { result2 = "D"; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\"D\""); } } if (result2 === null) { if (input.charCodeAt(pos) === 100) { result2 = "d"; pos++; } else { result2 = null; if (reportFailures === 0) { matchFailed("\"d\""); } } } if (result2 !== null) { result0 = [result0, result1, result2]; } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } } else { result0 = null; pos = pos1; } if (result0 !== null) { result0 = (function(offset, sign, digit) { return sign + digit.join(''); })(pos0, result0[0], result0[1]); } if (result0 === null) { pos = pos0; } if (result0 === null) { pos0 = pos; result0 = parse_nanInfinity(); if (result0 !== null) { if (input.charCodeAt(pos) === 68) { result1 = "D"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"D\""); } } if (result1 === null) { if (input.charCodeAt(pos) === 100) { result1 = "d"; pos++; } else { result1 = null; if (reportFailures === 0) { matchFailed("\"d\""); } } } result1 = result1 !== null ? result1 : ""; if (result1 !== null) { result0 = [result0, result1]; } else { result0 = null; pos = pos0; } } else { result0 = null; pos = pos0; } } } } return result0; } function parse_guid() { var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10; var pos0; pos0 = pos; if (input.substr(pos, 4) === "guid") { result0 = "guid"; pos += 4; } else { result0 = null; if (reportFailures === 0) { matchFailed("\"guid\""); } } if (result0 !== null) { result1 = parse_SQUOTE(); if (result1 !== null) { result2 = parse_HEXDIG8(); if (result2 !== null) { if (input.charCodeAt(pos) === 45) { result3 = "-"; pos++; } else { result3 = null; if (reportFailures === 0) { matchFailed("\"-\""); } } if (result3 !== null) { result4 = parse_HEXDIG4(); if (result4 !== null) { if (input.charCodeAt(pos) === 45) { result5 = "-";