| // @generated by Peggy 5.1.0. | |
| // | |
| // https://peggyjs.org/ | |
| ; | |
| class peg$SyntaxError extends SyntaxError { | |
| constructor(message, expected, found, location) { | |
| super(message); | |
| this.expected = expected; | |
| this.found = found; | |
| this.location = location; | |
| this.name = "SyntaxError"; | |
| } | |
| format(sources) { | |
| let str = "Error: " + this.message; | |
| if (this.location) { | |
| let src = null; | |
| const st = sources.find(s => s.source === this.location.source); | |
| if (st) { | |
| src = st.text.split(/\r\n|\n|\r/g); | |
| } | |
| const s = this.location.start; | |
| const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) | |
| ? this.location.source.offset(s) | |
| : s; | |
| const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; | |
| if (src) { | |
| const e = this.location.end; | |
| const filler = "".padEnd(offset_s.line.toString().length, " "); | |
| const line = src[s.line - 1]; | |
| const last = s.line === e.line ? e.column : line.length + 1; | |
| const hatLen = (last - s.column) || 1; | |
| str += "\n --> " + loc + "\n" | |
| + filler + " |\n" | |
| + offset_s.line + " | " + line + "\n" | |
| + filler + " | " + "".padEnd(s.column - 1, " ") | |
| + "".padEnd(hatLen, "^"); | |
| } else { | |
| str += "\n at " + loc; | |
| } | |
| } | |
| return str; | |
| } | |
| static buildMessage(expected, found) { | |
| function hex(ch) { | |
| return ch.codePointAt(0).toString(16).toUpperCase(); | |
| } | |
| const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") | |
| ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") | |
| : null; | |
| function unicodeEscape(s) { | |
| if (nonPrintable) { | |
| return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); | |
| } | |
| return s; | |
| } | |
| function literalEscape(s) { | |
| return unicodeEscape(s | |
| .replace(/\\/g, "\\\\") | |
| .replace(/"/g, "\\\"") | |
| .replace(/\0/g, "\\0") | |
| .replace(/\t/g, "\\t") | |
| .replace(/\n/g, "\\n") | |
| .replace(/\r/g, "\\r") | |
| .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) | |
| .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); | |
| } | |
| function classEscape(s) { | |
| return unicodeEscape(s | |
| .replace(/\\/g, "\\\\") | |
| .replace(/\]/g, "\\]") | |
| .replace(/\^/g, "\\^") | |
| .replace(/-/g, "\\-") | |
| .replace(/\0/g, "\\0") | |
| .replace(/\t/g, "\\t") | |
| .replace(/\n/g, "\\n") | |
| .replace(/\r/g, "\\r") | |
| .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) | |
| .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); | |
| } | |
| const DESCRIBE_EXPECTATION_FNS = { | |
| literal(expectation) { | |
| return "\"" + literalEscape(expectation.text) + "\""; | |
| }, | |
| class(expectation) { | |
| const escapedParts = expectation.parts.map( | |
| part => (Array.isArray(part) | |
| ? classEscape(part[0]) + "-" + classEscape(part[1]) | |
| : classEscape(part)) | |
| ); | |
| return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); | |
| }, | |
| any() { | |
| return "any character"; | |
| }, | |
| end() { | |
| return "end of input"; | |
| }, | |
| other(expectation) { | |
| return expectation.description; | |
| }, | |
| }; | |
| function describeExpectation(expectation) { | |
| return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); | |
| } | |
| function describeExpected(expected) { | |
| const descriptions = expected.map(describeExpectation); | |
| descriptions.sort(); | |
| if (descriptions.length > 0) { | |
| let j = 1; | |
| for (let i = 1; i < descriptions.length; i++) { | |
| if (descriptions[i - 1] !== descriptions[i]) { | |
| descriptions[j] = descriptions[i]; | |
| j++; | |
| } | |
| } | |
| descriptions.length = j; | |
| } | |
| switch (descriptions.length) { | |
| case 1: | |
| return descriptions[0]; | |
| case 2: | |
| return descriptions[0] + " or " + descriptions[1]; | |
| default: | |
| return descriptions.slice(0, -1).join(", ") | |
| + ", or " | |
| + descriptions[descriptions.length - 1]; | |
| } | |
| } | |
| function describeFound(found) { | |
| return found ? "\"" + literalEscape(found) + "\"" : "end of input"; | |
| } | |
| return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; | |
| } | |
| } | |
| function peg$parse(input, options) { | |
| options = options !== undefined ? options : {}; | |
| const peg$FAILED = {}; | |
| const peg$source = options.grammarSource; | |
| const peg$startRuleFunctions = { | |
| start: peg$parsestart, | |
| }; | |
| let peg$startRuleFunction = peg$parsestart; | |
| const peg$c0 = "#"; | |
| const peg$c1 = "["; | |
| const peg$c2 = "]"; | |
| const peg$c3 = "."; | |
| const peg$c4 = "="; | |
| const peg$c5 = "inf"; | |
| const peg$c6 = "nan"; | |
| const peg$c7 = "\"\"\""; | |
| const peg$c8 = "\""; | |
| const peg$c9 = "'''"; | |
| const peg$c10 = "'"; | |
| const peg$c11 = "\\"; | |
| const peg$c12 = "\r\n"; | |
| const peg$c13 = "\"\""; | |
| const peg$c14 = "''"; | |
| const peg$c15 = "0"; | |
| const peg$c16 = "0x"; | |
| const peg$c17 = "0o"; | |
| const peg$c18 = "0b"; | |
| const peg$c19 = "true"; | |
| const peg$c20 = "false"; | |
| const peg$c21 = ","; | |
| const peg$c22 = "{"; | |
| const peg$c23 = "}"; | |
| const peg$c24 = "-"; | |
| const peg$c25 = ":"; | |
| const peg$c26 = "z"; | |
| const peg$c27 = "t"; | |
| const peg$c28 = " "; | |
| const peg$c29 = "\n"; | |
| const peg$c30 = "\r"; | |
| const peg$c31 = "\uFEFF"; | |
| const peg$c32 = "\\U"; | |
| const peg$c33 = "\\u"; | |
| const peg$c34 = "\\x"; | |
| const peg$r0 = /^[\t -~\x80-\uFFFF]/; | |
| const peg$r1 = /^[+\-]/; | |
| const peg$r2 = /^[^"\\\0-\b\v-\x1F\x7F\r]/; | |
| const peg$r3 = /^[^'\0-\b\v-\x1F\x7F\r]/; | |
| const peg$r4 = /^[^"\\\0-\b\n-\x1F\x7F]/; | |
| const peg$r5 = /^[^'\0-\b\n-\x1F\x7F]/; | |
| const peg$r6 = /^[eE]/; | |
| const peg$r7 = /^[0-9_]/; | |
| const peg$r8 = /^[1-9]/; | |
| const peg$r9 = /^[_]/; | |
| const peg$r10 = /^[0-9]/; | |
| const peg$r11 = /^[0-9a-fA-F]/; | |
| const peg$r12 = /^[0-7]/; | |
| const peg$r13 = /^[01]/; | |
| const peg$r14 = /^[ \t]/; | |
| const peg$r15 = /^[A-Za-z0-9_\-]/; | |
| const peg$r16 = /^["\\btnfre]/; | |
| const peg$e0 = peg$literalExpectation("#", false); | |
| const peg$e1 = peg$classExpectation(["\t", [" ", "~"], ["\x80", "\uFFFF"]], false, false, false); | |
| const peg$e2 = peg$literalExpectation("[", false); | |
| const peg$e3 = peg$literalExpectation("]", false); | |
| const peg$e4 = peg$literalExpectation(".", false); | |
| const peg$e5 = peg$literalExpectation("=", false); | |
| const peg$e6 = peg$classExpectation(["+", "-"], false, false, false); | |
| const peg$e7 = peg$literalExpectation("inf", false); | |
| const peg$e8 = peg$literalExpectation("nan", false); | |
| const peg$e9 = peg$literalExpectation("\"\"\"", false); | |
| const peg$e10 = peg$literalExpectation("\"", false); | |
| const peg$e11 = peg$literalExpectation("'''", false); | |
| const peg$e12 = peg$literalExpectation("'", false); | |
| const peg$e13 = peg$literalExpectation("\\", false); | |
| const peg$e14 = peg$anyExpectation(); | |
| const peg$e15 = peg$literalExpectation("\r\n", false); | |
| const peg$e16 = peg$classExpectation(["\"", "\\", ["\0", "\b"], ["\v", "\x1F"], "\x7F", "\r"], true, false, false); | |
| const peg$e17 = peg$literalExpectation("\"\"", false); | |
| const peg$e18 = peg$classExpectation(["'", ["\0", "\b"], ["\v", "\x1F"], "\x7F", "\r"], true, false, false); | |
| const peg$e19 = peg$literalExpectation("''", false); | |
| const peg$e20 = peg$classExpectation(["\"", "\\", ["\0", "\b"], ["\n", "\x1F"], "\x7F"], true, false, false); | |
| const peg$e21 = peg$classExpectation(["'", ["\0", "\b"], ["\n", "\x1F"], "\x7F"], true, false, false); | |
| const peg$e22 = peg$classExpectation(["e", "E"], false, false, false); | |
| const peg$e23 = peg$literalExpectation("0", false); | |
| const peg$e24 = peg$literalExpectation("0x", false); | |
| const peg$e25 = peg$literalExpectation("0o", false); | |
| const peg$e26 = peg$literalExpectation("0b", false); | |
| const peg$e27 = peg$classExpectation([["0", "9"], "_"], false, false, false); | |
| const peg$e28 = peg$classExpectation([["1", "9"]], false, false, false); | |
| const peg$e29 = peg$classExpectation(["_"], false, false, false); | |
| const peg$e30 = peg$classExpectation([["0", "9"]], false, false, false); | |
| const peg$e31 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false, false); | |
| const peg$e32 = peg$classExpectation([["0", "7"]], false, false, false); | |
| const peg$e33 = peg$classExpectation(["0", "1"], false, false, false); | |
| const peg$e34 = peg$literalExpectation("true", false); | |
| const peg$e35 = peg$literalExpectation("false", false); | |
| const peg$e36 = peg$literalExpectation(",", false); | |
| const peg$e37 = peg$literalExpectation("{", false); | |
| const peg$e38 = peg$literalExpectation("}", false); | |
| const peg$e39 = peg$literalExpectation("-", false); | |
| const peg$e40 = peg$literalExpectation(":", false); | |
| const peg$e41 = peg$literalExpectation("Z", true); | |
| const peg$e42 = peg$literalExpectation("T", true); | |
| const peg$e43 = peg$literalExpectation(" ", false); | |
| const peg$e44 = peg$classExpectation([" ", "\t"], false, false, false); | |
| const peg$e45 = peg$literalExpectation("\n", false); | |
| const peg$e46 = peg$literalExpectation("\r", false); | |
| const peg$e47 = peg$literalExpectation("\uFEFF", false); | |
| const peg$e48 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "_", "-"], false, false, false); | |
| const peg$e49 = peg$classExpectation(["\"", "\\", "b", "t", "n", "f", "r", "e"], false, false, false); | |
| const peg$e50 = peg$literalExpectation("\\U", false); | |
| const peg$e51 = peg$literalExpectation("\\u", false); | |
| const peg$e52 = peg$literalExpectation("\\x", false); | |
| function peg$f0() { return nodes } | |
| function peg$f1(name) { addNode(node('ArrayPath', name, offset())) } | |
| function peg$f2(name) { addNode(node('ObjectPath', name, offset())) } | |
| function peg$f3(parts, name) { return parts.concat(name) } | |
| function peg$f4(name) { return [name] } | |
| function peg$f5(name) { return name } | |
| function peg$f6(name) { return name } | |
| function peg$f7(keys, value) { addNode(node('Assign', value, offset(), keys)) } | |
| function peg$f8(node) { return node.value } | |
| function peg$f9(node) { return node.value } | |
| function peg$f10() { if (++depth > MAX_DEPTH) { depth--; genError("Maximum nesting depth of " + MAX_DEPTH + " exceeded.", offset()); } return true; } | |
| function peg$f11(v) { return v; } | |
| function peg$f12(v) { depth--; return v; } | |
| function peg$f13() { depth--; return false; } | |
| function peg$f14(sign) { return node('Float', sign === '-' ? -Infinity : Infinity, offset()) } | |
| function peg$f15(sign) { return node('Float', NaN, offset()) } | |
| function peg$f16(body) { return node('String', body, offset()) } | |
| function peg$f17(chars) { return node('String', chars.join(''), offset()) } | |
| function peg$f18(body) { return node('String', body, offset()) } | |
| function peg$f19(chars) { return node('String', chars.join(''), offset()) } | |
| function peg$f20(head, parts, tail) { | |
| var result = head.join(''); | |
| for (var i = 0; i < parts.length; i++) { result += parts[i][0] + parts[i][1].join(''); } | |
| return result + (tail || ''); | |
| } | |
| function peg$f21() { genError("Invalid escape sequence", offset()) } | |
| function peg$f22() { return "\n" } | |
| function peg$f23() { return '' } | |
| function peg$f24() { return '""' } | |
| function peg$f25() { return '"' } | |
| function peg$f26() { return '""' } | |
| function peg$f27() { return '"' } | |
| function peg$f28(head, parts, tail) { | |
| var result = head.join(''); | |
| for (var i = 0; i < parts.length; i++) { result += parts[i][0] + parts[i][1].join(''); } | |
| return result + (tail || ''); | |
| } | |
| function peg$f29() { return "\n" } | |
| function peg$f30() { return "''" } | |
| function peg$f31() { return "'" } | |
| function peg$f32() { return "''" } | |
| function peg$f33() { return "'" } | |
| function peg$f34() { genError("Invalid escape sequence", offset()) } | |
| function peg$f35(left, right) { return node('Float', parseFloat(stripUnderscores(left + 'e' + right)), offset()) } | |
| function peg$f36(text) { return node('Float', parseFloat(stripUnderscores(text)), offset()) } | |
| function peg$f37(sign, digits, frac) { return (sign === '-' ? '-' : '') + digits + '.' + frac } | |
| function peg$f38(sign, digits, frac) { return (sign === '-' ? '-' : '') + digits + '.' + frac } | |
| function peg$f39(sign, digits) { return (sign === '-' ? '-' : '') + digits } | |
| function peg$f40() { return '0' } | |
| function peg$f41(sign, digits) { return (sign || '') + digits } | |
| function peg$f42(digits) { return node('Integer', parseInt(stripUnderscores(digits), 16), offset()) } | |
| function peg$f43(digits) { return node('Integer', parseInt(stripUnderscores(digits), 8), offset()) } | |
| function peg$f44(digits) { return node('Integer', parseInt(stripUnderscores(digits), 2), offset()) } | |
| function peg$f45(text) { return node('Integer', parseInt(stripUnderscores(text), 10), offset()) } | |
| function peg$f46(sign) { return (sign || '') + '0' } | |
| function peg$f47(sign, digits) { return (sign || '') + digits } | |
| function peg$f48() { return node('Boolean', true, offset()) } | |
| function peg$f49() { return node('Boolean', false, offset()) } | |
| function peg$f50() { return node('Array', [], offset()) } | |
| function peg$f51(head, v) { return v } | |
| function peg$f52(head, tail) { | |
| tail.unshift(head); return node('Array', tail, offset()) | |
| } | |
| function peg$f53() { return node('InlineTable', [], offset()) } | |
| function peg$f54(head, e) { return e } | |
| function peg$f55(head, tail) { | |
| tail.unshift(head); return node('InlineTable', tail, offset()) | |
| } | |
| function peg$f56(keys, value) { return node('InlineTableValue', value, offset(), keys) } | |
| function peg$f57(parts, last) { return parts.concat(last) } | |
| function peg$f58(k) { return [k] } | |
| function peg$f59(k) { return k } | |
| function peg$f60(t, frac) { return frac ? t + frac : t } | |
| function peg$f61(t) { return t + ':00' } | |
| function peg$f62() { return "Z" } | |
| function peg$f63(d, t, o) { var off = offset(); validateDate(d, off); validateTime(t, off); validateOffset(o, off); var n = node('Date', new Date(d + "T" + t + o), off); n.raw = d + "T" + t; n.tz = o; return n } | |
| function peg$f64(d, t) { var off = offset(); validateDate(d, off); validateTime(t, off); return node('LocalDateTime', d + "T" + t, off) } | |
| function peg$f65(d) { var off = offset(); validateDate(d, off); return node('LocalDate', d, off) } | |
| function peg$f66(t) { var off = offset(); validateTime(t, off); return node('LocalTime', t, off) } | |
| function peg$f67(ch) { return ch === 'n' ? '\n' : ch === 't' ? '\t' : ch === 'r' ? '\r' : ch === '\\' ? '\\' : ch === '"' ? '"' : ch === 'b' ? '\b' : ch === 'f' ? '\f' : '\x1B' } | |
| function peg$f68(digits) { return convertCodePoint(digits) } | |
| function peg$f69(digits) { return convertCodePoint(digits) } | |
| function peg$f70(digits) { return convertCodePoint(digits) } | |
| let peg$currPos = options.peg$currPos | 0; | |
| let peg$savedPos = peg$currPos; | |
| const peg$posDetailsCache = [{ line: 1, column: 1 }]; | |
| let peg$maxFailPos = peg$currPos; | |
| let peg$maxFailExpected = options.peg$maxFailExpected || []; | |
| let peg$silentFails = options.peg$silentFails | 0; | |
| let peg$result; | |
| if (options.startRule) { | |
| if (!(options.startRule in peg$startRuleFunctions)) { | |
| throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); | |
| } | |
| peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; | |
| } | |
| function text() { | |
| return input.substring(peg$savedPos, peg$currPos); | |
| } | |
| function offset() { | |
| return peg$savedPos; | |
| } | |
| function range() { | |
| return { | |
| source: peg$source, | |
| start: peg$savedPos, | |
| end: peg$currPos, | |
| }; | |
| } | |
| function location() { | |
| return peg$computeLocation(peg$savedPos, peg$currPos); | |
| } | |
| function expected(description, location) { | |
| location = location !== undefined | |
| ? location | |
| : peg$computeLocation(peg$savedPos, peg$currPos); | |
| throw peg$buildStructuredError( | |
| [peg$otherExpectation(description)], | |
| input.substring(peg$savedPos, peg$currPos), | |
| location | |
| ); | |
| } | |
| function error(message, location) { | |
| location = location !== undefined | |
| ? location | |
| : peg$computeLocation(peg$savedPos, peg$currPos); | |
| throw peg$buildSimpleError(message, location); | |
| } | |
| function peg$getUnicode(pos = peg$currPos) { | |
| const cp = input.codePointAt(pos); | |
| if (cp === undefined) { | |
| return ""; | |
| } | |
| return String.fromCodePoint(cp); | |
| } | |
| function peg$literalExpectation(text, ignoreCase) { | |
| return { type: "literal", text, ignoreCase }; | |
| } | |
| function peg$classExpectation(parts, inverted, ignoreCase, unicode) { | |
| return { type: "class", parts, inverted, ignoreCase, unicode }; | |
| } | |
| function peg$anyExpectation() { | |
| return { type: "any" }; | |
| } | |
| function peg$endExpectation() { | |
| return { type: "end" }; | |
| } | |
| function peg$otherExpectation(description) { | |
| return { type: "other", description }; | |
| } | |
| function peg$computePosDetails(pos) { | |
| let details = peg$posDetailsCache[pos]; | |
| let p; | |
| if (details) { | |
| return details; | |
| } else { | |
| if (pos >= peg$posDetailsCache.length) { | |
| p = peg$posDetailsCache.length - 1; | |
| } else { | |
| p = pos; | |
| while (!peg$posDetailsCache[--p]) {} | |
| } | |
| details = peg$posDetailsCache[p]; | |
| details = { | |
| line: details.line, | |
| column: details.column, | |
| }; | |
| while (p < pos) { | |
| if (input.charCodeAt(p) === 10) { | |
| details.line++; | |
| details.column = 1; | |
| } else { | |
| details.column++; | |
| } | |
| p++; | |
| } | |
| peg$posDetailsCache[pos] = details; | |
| return details; | |
| } | |
| } | |
| function peg$computeLocation(startPos, endPos, offset) { | |
| const startPosDetails = peg$computePosDetails(startPos); | |
| const endPosDetails = peg$computePosDetails(endPos); | |
| const res = { | |
| source: peg$source, | |
| start: { | |
| offset: startPos, | |
| line: startPosDetails.line, | |
| column: startPosDetails.column, | |
| }, | |
| end: { | |
| offset: endPos, | |
| line: endPosDetails.line, | |
| column: endPosDetails.column, | |
| }, | |
| }; | |
| if (offset && peg$source && (typeof peg$source.offset === "function")) { | |
| res.start = peg$source.offset(res.start); | |
| res.end = peg$source.offset(res.end); | |
| } | |
| return res; | |
| } | |
| function peg$fail(expected) { | |
| if (peg$currPos < peg$maxFailPos) { return; } | |
| if (peg$currPos > peg$maxFailPos) { | |
| peg$maxFailPos = peg$currPos; | |
| peg$maxFailExpected = []; | |
| } | |
| peg$maxFailExpected.push(expected); | |
| } | |
| function peg$buildSimpleError(message, location) { | |
| return new peg$SyntaxError(message, null, null, location); | |
| } | |
| function peg$buildStructuredError(expected, found, location) { | |
| return new peg$SyntaxError( | |
| peg$SyntaxError.buildMessage(expected, found), | |
| expected, | |
| found, | |
| location | |
| ); | |
| } | |
| function peg$parsestart() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| s1 = peg$parseBOM(); | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = []; | |
| s3 = peg$parseline(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseline(); | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f0(); | |
| return s0; | |
| } | |
| function peg$parseline() { | |
| let s0, s1, s2, s3, s4, s5, s6; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseS(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseS(); | |
| } | |
| s2 = peg$parseexpression(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseS(); | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseS(); | |
| } | |
| s4 = peg$parsecomment(); | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = []; | |
| s6 = peg$parseNL(); | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parseNL(); | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 === peg$FAILED) { | |
| s5 = peg$parseEOF(); | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s1 = [s1, s2, s3, s4, s5]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseS(); | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseS(); | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseNL(); | |
| if (s3 !== peg$FAILED) { | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseNL(); | |
| } | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 === peg$FAILED) { | |
| s2 = peg$parseEOF(); | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseNL(); | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseexpression() { | |
| let s0; | |
| s0 = peg$parsecomment(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsetable_or_array_path(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseassignment(); | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsecomment() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 35) { | |
| s1 = peg$c0; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e0); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = input.charAt(peg$currPos); | |
| if (peg$r0.test(s3)) { | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e1); } | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = input.charAt(peg$currPos); | |
| if (peg$r0.test(s3)) { | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e1); } | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsetable_or_array_path() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s1 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s2 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseS(); | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseS(); | |
| } | |
| s4 = peg$parsetable_key(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = []; | |
| s6 = peg$parseS(); | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s6 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s7 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f1(s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s1 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseS(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseS(); | |
| } | |
| s3 = peg$parsetable_key(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$parseS(); | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s5 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f2(s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsetable_key() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parsedot_ended_table_key_part(); | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parsedot_ended_table_key_part(); | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parsetable_key_part(); | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f3(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsetable_key_part(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f4(s1); | |
| } | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsetable_key_part() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseS(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseS(); | |
| } | |
| s2 = peg$parsesimple_key(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseS(); | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseS(); | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f5(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsedot_ended_table_key_part() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseS(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseS(); | |
| } | |
| s2 = peg$parsesimple_key(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseS(); | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s4 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f6(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseassignment() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = peg$parseinline_key(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseS(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 61) { | |
| s3 = peg$c4; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e5); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$parseS(); | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$parseS(); | |
| } | |
| s5 = peg$parsevalue(); | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f7(s1, s5); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsekey() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseASCII_BASIC(); | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseASCII_BASIC(); | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsequoted_key() { | |
| let s0, s1; | |
| s0 = peg$currPos; | |
| s1 = peg$parsedouble_quoted_single_line_string(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f8(s1); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsesingle_quoted_single_line_string(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f9(s1); | |
| } | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsevalue() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| peg$savedPos = peg$currPos; | |
| s1 = peg$f10(); | |
| if (s1) { | |
| s1 = undefined; | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parsevalue_choice(); | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f11(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsevalue_choice() { | |
| let s0, s1; | |
| s0 = peg$currPos; | |
| s1 = peg$parsevalue_body(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f12(s1); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| peg$savedPos = peg$currPos; | |
| s0 = peg$f13(); | |
| if (s0) { | |
| s0 = undefined; | |
| } else { | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsevalue_body() { | |
| let s0; | |
| s0 = peg$parsestring(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsenumber_or_date(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseboolean(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsearray(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseinline_table(); | |
| } | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsenumber_or_date() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| if (input.substr(peg$currPos, 3) === peg$c5) { | |
| s2 = peg$c5; | |
| peg$currPos += 3; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e7); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f14(s1); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| if (input.substr(peg$currPos, 3) === peg$c6) { | |
| s2 = peg$c6; | |
| peg$currPos += 3; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e8); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f15(s1); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsedatetime(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsefloat(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseinteger(); | |
| } | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsestring() { | |
| let s0; | |
| s0 = peg$parsedouble_quoted_multiline_string(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsedouble_quoted_single_line_string(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsesingle_quoted_multiline_string(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsesingle_quoted_single_line_string(); | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsedouble_quoted_multiline_string() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 3) === peg$c7) { | |
| s1 = peg$c7; | |
| peg$currPos += 3; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parseNL(); | |
| if (s2 === peg$FAILED) { | |
| s2 = null; | |
| } | |
| s3 = peg$parsemlb_body(); | |
| if (input.substr(peg$currPos, 3) === peg$c7) { | |
| s4 = peg$c7; | |
| peg$currPos += 3; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f16(s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsedouble_quoted_single_line_string() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s1 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parsestring_char(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parsestring_char(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s3 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f17(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsesingle_quoted_multiline_string() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 3) === peg$c9) { | |
| s1 = peg$c9; | |
| peg$currPos += 3; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parseNL(); | |
| if (s2 === peg$FAILED) { | |
| s2 = null; | |
| } | |
| s3 = peg$parsemll_body(); | |
| if (input.substr(peg$currPos, 3) === peg$c9) { | |
| s4 = peg$c9; | |
| peg$currPos += 3; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f18(s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsesingle_quoted_single_line_string() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s1 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseliteral_char(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseliteral_char(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s3 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f19(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsemlb_body() { | |
| let s0, s1, s2, s3, s4, s5, s6; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parsemlb_content(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parsemlb_content(); | |
| } | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = peg$parsemlb_quotes(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = []; | |
| s6 = peg$parsemlb_content(); | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parsemlb_content(); | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = peg$parsemlb_quotes(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = []; | |
| s6 = peg$parsemlb_content(); | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parsemlb_content(); | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s3 = peg$parsemlb_trailing(); | |
| if (s3 === peg$FAILED) { | |
| s3 = null; | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f20(s1, s2, s3); | |
| return s0; | |
| } | |
| function peg$parsemlb_content() { | |
| let s0, s1, s2; | |
| s0 = peg$parseESCAPED(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsemlb_escaped_newline(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s1 = peg$c11; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e13); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s2 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f21(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c12) { | |
| s1 = peg$c12; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e15); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f22(); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e16); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e16); } | |
| } | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsemlb_escaped_newline() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s1 = peg$c11; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e13); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseS(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseS(); | |
| } | |
| s3 = peg$parseNL(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$parseNLS(); | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$parseNLS(); | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f23(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsemlb_quotes() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c13) { | |
| s1 = peg$c13; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e17); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s3 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f24(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s1 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s3 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f25(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsemlb_trailing() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c13) { | |
| s1 = peg$c13; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e17); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.substr(peg$currPos, 3) === peg$c7) { | |
| s3 = peg$c7; | |
| peg$currPos += 3; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| peg$silentFails--; | |
| if (s3 !== peg$FAILED) { | |
| peg$currPos = s2; | |
| s2 = undefined; | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f26(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s1 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.substr(peg$currPos, 3) === peg$c7) { | |
| s3 = peg$c7; | |
| peg$currPos += 3; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| peg$silentFails--; | |
| if (s3 !== peg$FAILED) { | |
| peg$currPos = s2; | |
| s2 = undefined; | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f27(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsemll_body() { | |
| let s0, s1, s2, s3, s4, s5, s6; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parsemll_content(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parsemll_content(); | |
| } | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = peg$parsemll_quotes(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = []; | |
| s6 = peg$parsemll_content(); | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parsemll_content(); | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = peg$parsemll_quotes(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = []; | |
| s6 = peg$parsemll_content(); | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parsemll_content(); | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s3 = peg$parsemll_trailing(); | |
| if (s3 === peg$FAILED) { | |
| s3 = null; | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f28(s1, s2, s3); | |
| return s0; | |
| } | |
| function peg$parsemll_content() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c12) { | |
| s1 = peg$c12; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e15); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f29(); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r3.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e18); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r3.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e18); } | |
| } | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsemll_quotes() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c14) { | |
| s1 = peg$c14; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e19); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s3 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f30(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s1 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s3 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f31(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsemll_trailing() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c14) { | |
| s1 = peg$c14; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e19); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.substr(peg$currPos, 3) === peg$c9) { | |
| s3 = peg$c9; | |
| peg$currPos += 3; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| peg$silentFails--; | |
| if (s3 !== peg$FAILED) { | |
| peg$currPos = s2; | |
| s2 = undefined; | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f32(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s1 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.substr(peg$currPos, 3) === peg$c9) { | |
| s3 = peg$c9; | |
| peg$currPos += 3; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| peg$silentFails--; | |
| if (s3 !== peg$FAILED) { | |
| peg$currPos = s2; | |
| s2 = undefined; | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f33(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsestring_char() { | |
| let s0, s1, s2; | |
| s0 = peg$parseESCAPED(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s1 = peg$c11; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e13); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s2 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f34(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r4.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e20); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r4.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e20); } | |
| } | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseliteral_char() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r5.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e21); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r5.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e21); } | |
| } | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsefloat() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| s1 = peg$parsefloat_or_int_text(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r6.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e22); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parsefloat_exp_text(); | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f35(s1, s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsefloat_text(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f36(s1); | |
| } | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsefloat_text() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = peg$parseFLOAT_DEC_INT(); | |
| if (s2 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s3 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$currPos; | |
| s5 = peg$parseDEC_DIGIT_SEQ(); | |
| if (s5 !== peg$FAILED) { | |
| s4 = input.substring(s4, peg$currPos); | |
| } else { | |
| s4 = s5; | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f37(s1, s2, s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsefloat_or_int_text() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = peg$parseFLOAT_DEC_INT(); | |
| if (s2 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s3 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$currPos; | |
| s5 = peg$parseDEC_DIGIT_SEQ(); | |
| if (s5 !== peg$FAILED) { | |
| s4 = input.substring(s4, peg$currPos); | |
| } else { | |
| s4 = s5; | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f38(s1, s2, s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = peg$parseFLOAT_DEC_INT(); | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f39(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseFLOAT_DEC_INT() { | |
| let s0, s1; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 48) { | |
| s1 = peg$c15; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e23); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f40(); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parseDEC_INT_NOZERO_SEQ(); | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsefloat_exp_text() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = peg$currPos; | |
| s3 = peg$parseDEC_DIGIT_SEQ(); | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f41(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseinteger() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c16) { | |
| s1 = peg$c16; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e24); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$parseHEX_DIGIT_SEQ(); | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f42(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c17) { | |
| s1 = peg$c17; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e25); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$parseOCT_DIGIT_SEQ(); | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f43(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c18) { | |
| s1 = peg$c18; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e26); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$parseBIN_DIGIT_SEQ(); | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f44(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsedec_integer_text(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f45(s1); | |
| } | |
| s0 = s1; | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsedec_integer_text() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| if (input.charCodeAt(peg$currPos) === 48) { | |
| s2 = peg$c15; | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e23); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$currPos; | |
| peg$silentFails++; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r7.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e27); } | |
| } | |
| peg$silentFails--; | |
| if (s4 === peg$FAILED) { | |
| s3 = undefined; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s5 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| peg$silentFails--; | |
| if (s5 === peg$FAILED) { | |
| s4 = undefined; | |
| } else { | |
| peg$currPos = s4; | |
| s4 = peg$FAILED; | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f46(s1); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s1 === peg$FAILED) { | |
| s1 = null; | |
| } | |
| s2 = peg$currPos; | |
| s3 = peg$parseDEC_INT_NOZERO_SEQ(); | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s4 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| peg$silentFails--; | |
| if (s4 === peg$FAILED) { | |
| s3 = undefined; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f47(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseDEC_INT_NOZERO_SEQ() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r8.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e28); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseDEC_DIGIT_SEQ() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseHEX_DIGIT_SEQ() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r11.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e31); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r11.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e31); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r11.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e31); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseOCT_DIGIT_SEQ() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r12.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e32); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r12.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e32); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r12.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e32); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseBIN_DIGIT_SEQ() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r13.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e33); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r13.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e33); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = input.charAt(peg$currPos); | |
| if (peg$r9.test(s4)) { | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e29); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r13.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e33); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseboolean() { | |
| let s0, s1; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 4) === peg$c19) { | |
| s1 = peg$c19; | |
| peg$currPos += 4; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e34); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f48(); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 5) === peg$c20) { | |
| s1 = peg$c20; | |
| peg$currPos += 5; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e35); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f49(); | |
| } | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsearray() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s1 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parsearray_sep(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parsearray_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s3 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f50(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s1 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parsearray_sep(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parsearray_sep(); | |
| } | |
| s3 = peg$parsevalue(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$currPos; | |
| s6 = []; | |
| s7 = peg$parsearray_sep(); | |
| while (s7 !== peg$FAILED) { | |
| s6.push(s7); | |
| s7 = peg$parsearray_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s7 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s8 = []; | |
| s9 = peg$parsearray_sep(); | |
| while (s9 !== peg$FAILED) { | |
| s8.push(s9); | |
| s9 = peg$parsearray_sep(); | |
| } | |
| s9 = peg$parsevalue(); | |
| if (s9 !== peg$FAILED) { | |
| peg$savedPos = s5; | |
| s5 = peg$f51(s3, s9); | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$currPos; | |
| s6 = []; | |
| s7 = peg$parsearray_sep(); | |
| while (s7 !== peg$FAILED) { | |
| s6.push(s7); | |
| s7 = peg$parsearray_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s7 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s8 = []; | |
| s9 = peg$parsearray_sep(); | |
| while (s9 !== peg$FAILED) { | |
| s8.push(s9); | |
| s9 = peg$parsearray_sep(); | |
| } | |
| s9 = peg$parsevalue(); | |
| if (s9 !== peg$FAILED) { | |
| peg$savedPos = s5; | |
| s5 = peg$f51(s3, s9); | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } | |
| s5 = []; | |
| s6 = peg$parsearray_sep(); | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parsearray_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s6 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s6 === peg$FAILED) { | |
| s6 = null; | |
| } | |
| s7 = []; | |
| s8 = peg$parsearray_sep(); | |
| while (s8 !== peg$FAILED) { | |
| s7.push(s8); | |
| s8 = peg$parsearray_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s8 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s8 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s8 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f52(s3, s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsearray_sep() { | |
| let s0; | |
| s0 = peg$parseS(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseNL(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsecomment(); | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseinline_table() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 123) { | |
| s1 = peg$c22; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e37); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseinline_sep(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseinline_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 125) { | |
| s3 = peg$c23; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e38); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f53(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 123) { | |
| s1 = peg$c22; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e37); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseinline_sep(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseinline_sep(); | |
| } | |
| s3 = peg$parseinline_table_entry(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$currPos; | |
| s6 = []; | |
| s7 = peg$parseinline_sep(); | |
| while (s7 !== peg$FAILED) { | |
| s6.push(s7); | |
| s7 = peg$parseinline_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s7 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s8 = []; | |
| s9 = peg$parseinline_sep(); | |
| while (s9 !== peg$FAILED) { | |
| s8.push(s9); | |
| s9 = peg$parseinline_sep(); | |
| } | |
| s9 = peg$parseinline_table_entry(); | |
| if (s9 !== peg$FAILED) { | |
| peg$savedPos = s5; | |
| s5 = peg$f54(s3, s9); | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$currPos; | |
| s6 = []; | |
| s7 = peg$parseinline_sep(); | |
| while (s7 !== peg$FAILED) { | |
| s6.push(s7); | |
| s7 = peg$parseinline_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s7 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s8 = []; | |
| s9 = peg$parseinline_sep(); | |
| while (s9 !== peg$FAILED) { | |
| s8.push(s9); | |
| s9 = peg$parseinline_sep(); | |
| } | |
| s9 = peg$parseinline_table_entry(); | |
| if (s9 !== peg$FAILED) { | |
| peg$savedPos = s5; | |
| s5 = peg$f54(s3, s9); | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } | |
| s5 = []; | |
| s6 = peg$parseinline_sep(); | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = peg$parseinline_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s6 = peg$c21; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e36); } | |
| } | |
| if (s6 === peg$FAILED) { | |
| s6 = null; | |
| } | |
| s7 = []; | |
| s8 = peg$parseinline_sep(); | |
| while (s8 !== peg$FAILED) { | |
| s7.push(s8); | |
| s8 = peg$parseinline_sep(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 125) { | |
| s8 = peg$c23; | |
| peg$currPos++; | |
| } else { | |
| s8 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e38); } | |
| } | |
| if (s8 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f55(s3, s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseinline_table_entry() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = peg$parseinline_key(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseS(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 61) { | |
| s3 = peg$c4; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e5); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$parseS(); | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$parseS(); | |
| } | |
| s5 = peg$parsevalue(); | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f56(s1, s5); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseinline_sep() { | |
| let s0; | |
| s0 = peg$parseS(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseNL(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsecomment(); | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseinline_key() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseinline_dot_key_part(); | |
| if (s2 !== peg$FAILED) { | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseinline_dot_key_part(); | |
| } | |
| } else { | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$parseS(); | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$parseS(); | |
| } | |
| s3 = peg$parsesimple_key(); | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f57(s1, s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsesimple_key(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f58(s1); | |
| } | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parseinline_dot_key_part() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| s1 = []; | |
| s2 = peg$parseS(); | |
| while (s2 !== peg$FAILED) { | |
| s1.push(s2); | |
| s2 = peg$parseS(); | |
| } | |
| s2 = peg$parsesimple_key(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseS(); | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseS(); | |
| } | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s4 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f59(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parsesimple_key() { | |
| let s0; | |
| s0 = peg$parsekey(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parsequoted_key(); | |
| } | |
| return s0; | |
| } | |
| function peg$parsesecfragment() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s2 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = []; | |
| s4 = peg$parseDIGIT(); | |
| if (s4 !== peg$FAILED) { | |
| while (s4 !== peg$FAILED) { | |
| s3.push(s4); | |
| s4 = peg$parseDIGIT(); | |
| } | |
| } else { | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s2 = [s2, s3]; | |
| s1 = s2; | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsedate_part() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$parseDIGIT(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parseDIGIT(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parseDIGIT(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = peg$parseDIGIT(); | |
| if (s5 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 45) { | |
| s6 = peg$c24; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e39); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseDIGIT(); | |
| if (s7 !== peg$FAILED) { | |
| s8 = peg$parseDIGIT(); | |
| if (s8 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 45) { | |
| s9 = peg$c24; | |
| peg$currPos++; | |
| } else { | |
| s9 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e39); } | |
| } | |
| if (s9 !== peg$FAILED) { | |
| s10 = peg$parseDIGIT(); | |
| if (s10 !== peg$FAILED) { | |
| s11 = peg$parseDIGIT(); | |
| if (s11 !== peg$FAILED) { | |
| s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]; | |
| s1 = s2; | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| return s0; | |
| } | |
| function peg$parsetime_part() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$currPos; | |
| s3 = peg$parseDIGIT(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parseDIGIT(); | |
| if (s4 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 58) { | |
| s5 = peg$c25; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e40); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parseDIGIT(); | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseDIGIT(); | |
| if (s7 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 58) { | |
| s8 = peg$c25; | |
| peg$currPos++; | |
| } else { | |
| s8 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e40); } | |
| } | |
| if (s8 !== peg$FAILED) { | |
| s9 = peg$parseDIGIT(); | |
| if (s9 !== peg$FAILED) { | |
| s10 = peg$parseDIGIT(); | |
| if (s10 !== peg$FAILED) { | |
| s3 = [s3, s4, s5, s6, s7, s8, s9, s10]; | |
| s2 = s3; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = input.substring(s1, peg$currPos); | |
| } else { | |
| s1 = s2; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parsesecfragment(); | |
| if (s2 === peg$FAILED) { | |
| s2 = null; | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f60(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$currPos; | |
| s3 = peg$parseDIGIT(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parseDIGIT(); | |
| if (s4 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 58) { | |
| s5 = peg$c25; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e40); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parseDIGIT(); | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseDIGIT(); | |
| if (s7 !== peg$FAILED) { | |
| s3 = [s3, s4, s5, s6, s7]; | |
| s2 = s3; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = input.substring(s1, peg$currPos); | |
| } else { | |
| s1 = s2; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.charCodeAt(peg$currPos) === 58) { | |
| s3 = peg$c25; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e40); } | |
| } | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f61(s1); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseoffset() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| s1 = input.charAt(peg$currPos); | |
| if (s1.toLowerCase() === peg$c26) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e41); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f62(); | |
| } | |
| s0 = s1; | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parseDIGIT(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parseDIGIT(); | |
| if (s4 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 58) { | |
| s5 = peg$c25; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e40); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parseDIGIT(); | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseDIGIT(); | |
| if (s7 !== peg$FAILED) { | |
| s2 = [s2, s3, s4, s5, s6, s7]; | |
| s1 = s2; | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s1; | |
| s1 = peg$FAILED; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s0 = input.substring(s0, peg$currPos); | |
| } else { | |
| s0 = s1; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsedatetime() { | |
| let s0, s1, s2, s3, s4; | |
| s0 = peg$currPos; | |
| s1 = peg$parsedate_part(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parsedatetime_delim(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parsetime_part(); | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parseoffset(); | |
| if (s4 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f63(s1, s3, s4); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsedate_part(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parsedatetime_delim(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parsetime_part(); | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f64(s1, s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsedate_part(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| s3 = peg$parsedatetime_delim(); | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f65(s1); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| s1 = peg$parsetime_part(); | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f66(s1); | |
| } | |
| s0 = s1; | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parsedatetime_delim() { | |
| let s0, s1, s2, s3; | |
| s0 = input.charAt(peg$currPos); | |
| if (s0.toLowerCase() === peg$c27) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e42); } | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 32) { | |
| s1 = peg$c28; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e43); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| s3 = peg$parseDIGIT(); | |
| peg$silentFails--; | |
| if (s3 !== peg$FAILED) { | |
| peg$currPos = s2; | |
| s2 = undefined; | |
| } else { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseS() { | |
| let s0; | |
| s0 = input.charAt(peg$currPos); | |
| if (peg$r14.test(s0)) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e44); } | |
| } | |
| return s0; | |
| } | |
| function peg$parseNL() { | |
| let s0, s1, s2; | |
| if (input.charCodeAt(peg$currPos) === 10) { | |
| s0 = peg$c29; | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e45); } | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 13) { | |
| s1 = peg$c30; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e46); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 10) { | |
| s2 = peg$c29; | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e45); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = [s1, s2]; | |
| s0 = s1; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseNLS() { | |
| let s0; | |
| s0 = peg$parseNL(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseS(); | |
| } | |
| return s0; | |
| } | |
| function peg$parseEOF() { | |
| let s0, s1; | |
| s0 = peg$currPos; | |
| peg$silentFails++; | |
| if (input.length > peg$currPos) { | |
| s1 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| peg$silentFails--; | |
| if (s1 === peg$FAILED) { | |
| s0 = undefined; | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseBOM() { | |
| let s0; | |
| if (input.charCodeAt(peg$currPos) === 65279) { | |
| s0 = peg$c31; | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e47); } | |
| } | |
| return s0; | |
| } | |
| function peg$parseDIGIT() { | |
| let s0; | |
| s0 = input.charAt(peg$currPos); | |
| if (peg$r10.test(s0)) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e30); } | |
| } | |
| return s0; | |
| } | |
| function peg$parseHEX() { | |
| let s0; | |
| s0 = input.charAt(peg$currPos); | |
| if (peg$r11.test(s0)) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e31); } | |
| } | |
| return s0; | |
| } | |
| function peg$parseASCII_BASIC() { | |
| let s0; | |
| s0 = input.charAt(peg$currPos); | |
| if (peg$r15.test(s0)) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e48); } | |
| } | |
| return s0; | |
| } | |
| function peg$parseESCAPED() { | |
| let s0, s1, s2; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s1 = peg$c11; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e13); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = input.charAt(peg$currPos); | |
| if (peg$r16.test(s2)) { | |
| peg$currPos++; | |
| } else { | |
| s2 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e49); } | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f67(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseESCAPED_UNICODE(); | |
| } | |
| return s0; | |
| } | |
| function peg$parseESCAPED_UNICODE() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c32) { | |
| s1 = peg$c32; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e50); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$currPos; | |
| s4 = peg$parseHEX(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = peg$parseHEX(); | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parseHEX(); | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseHEX(); | |
| if (s7 !== peg$FAILED) { | |
| s8 = peg$parseHEX(); | |
| if (s8 !== peg$FAILED) { | |
| s9 = peg$parseHEX(); | |
| if (s9 !== peg$FAILED) { | |
| s10 = peg$parseHEX(); | |
| if (s10 !== peg$FAILED) { | |
| s11 = peg$parseHEX(); | |
| if (s11 !== peg$FAILED) { | |
| s4 = [s4, s5, s6, s7, s8, s9, s10, s11]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f68(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c33) { | |
| s1 = peg$c33; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e51); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$currPos; | |
| s4 = peg$parseHEX(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = peg$parseHEX(); | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parseHEX(); | |
| if (s6 !== peg$FAILED) { | |
| s7 = peg$parseHEX(); | |
| if (s7 !== peg$FAILED) { | |
| s4 = [s4, s5, s6, s7]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f69(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 2) === peg$c34) { | |
| s1 = peg$c34; | |
| peg$currPos += 2; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e52); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| s3 = peg$currPos; | |
| s4 = peg$parseHEX(); | |
| if (s4 !== peg$FAILED) { | |
| s5 = peg$parseHEX(); | |
| if (s5 !== peg$FAILED) { | |
| s4 = [s4, s5]; | |
| s3 = s4; | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s2 = input.substring(s2, peg$currPos); | |
| } else { | |
| s2 = s3; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f70(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| var nodes = []; | |
| var inputText = input; | |
| // Bound on how deeply arrays / inline tables may nest. The generated parser | |
| // is recursive-descent, so nesting depth maps directly onto call-stack depth; | |
| // without a limit, deeply nested input overflows the stack with an uncatchable | |
| // RangeError instead of a normal parse error (GHSA-82x6-q7mm-w9cf). | |
| var depth = 0; | |
| var MAX_DEPTH = (options && options.maxDepth != null) ? options.maxDepth : 500; | |
| function resolveLineCol(off) { | |
| var line = 1, col = 1; | |
| for (var i = 0; i < off; i++) { | |
| if (inputText.charCodeAt(i) === 10) { line++; col = 1; } | |
| else { col++; } | |
| } | |
| return { line: line, column: col }; | |
| } | |
| function genError(err, off) { | |
| var pos = resolveLineCol(off); | |
| var ex = new Error(err); | |
| ex.line = pos.line; | |
| ex.column = pos.column; | |
| throw ex; | |
| } | |
| function addNode(node) { | |
| nodes.push(node); | |
| } | |
| function node(type, value, off, key) { | |
| var obj = { type: type, value: value, offset: off }; | |
| if (key) obj.key = key; | |
| return obj; | |
| } | |
| function validateDate(dateStr, off) { | |
| var year = dateStr.charCodeAt(0) * 1000 + dateStr.charCodeAt(1) * 100 + dateStr.charCodeAt(2) * 10 + dateStr.charCodeAt(3) - 53328; | |
| var month = (dateStr.charCodeAt(5) - 48) * 10 + dateStr.charCodeAt(6) - 48; | |
| var day = (dateStr.charCodeAt(8) - 48) * 10 + dateStr.charCodeAt(9) - 48; | |
| if (month < 1 || month > 12) { | |
| genError("Invalid date: month " + month + " out of range.", off); | |
| } | |
| var maxDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; | |
| if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) { | |
| maxDays[1] = 29; | |
| } | |
| if (day < 1 || day > maxDays[month - 1]) { | |
| genError("Invalid date: day " + day + " out of range for month " + month + ".", off); | |
| } | |
| } | |
| function validateTime(timeStr, off) { | |
| var hour = (timeStr.charCodeAt(0) - 48) * 10 + timeStr.charCodeAt(1) - 48; | |
| var minute = (timeStr.charCodeAt(3) - 48) * 10 + timeStr.charCodeAt(4) - 48; | |
| var second = (timeStr.charCodeAt(6) - 48) * 10 + timeStr.charCodeAt(7) - 48; | |
| if (hour > 23) { | |
| genError("Invalid time: hour " + hour + " out of range.", off); | |
| } | |
| if (minute > 59) { | |
| genError("Invalid time: minute " + minute + " out of range.", off); | |
| } | |
| if (second > 59) { | |
| genError("Invalid time: second " + second + " out of range.", off); | |
| } | |
| } | |
| function validateOffset(offsetStr, off) { | |
| if (offsetStr === "Z" || offsetStr === "z") return; | |
| var hour = (offsetStr.charCodeAt(1) - 48) * 10 + offsetStr.charCodeAt(2) - 48; | |
| var minute = (offsetStr.charCodeAt(4) - 48) * 10 + offsetStr.charCodeAt(5) - 48; | |
| if (hour > 23) { | |
| genError("Invalid offset: hour " + hour + " out of range.", off); | |
| } | |
| if (minute > 59) { | |
| genError("Invalid offset: minute " + minute + " out of range.", off); | |
| } | |
| } | |
| function stripUnderscores(str) { | |
| return str.indexOf('_') === -1 ? str : str.replace(/_/g, ''); | |
| } | |
| function convertCodePoint(str) { | |
| var num = parseInt(str, 16); | |
| if ( | |
| num !== num || | |
| num < 0 || | |
| num > 0x10FFFF || | |
| (num > 0xD7FF && num < 0xE000) | |
| ) { | |
| genError("Invalid Unicode escape code: " + str, offset()); | |
| } else { | |
| return String.fromCodePoint(num); | |
| } | |
| } | |
| peg$result = peg$startRuleFunction(); | |
| const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); | |
| function peg$throw() { | |
| if (peg$result !== peg$FAILED && peg$currPos < input.length) { | |
| peg$fail(peg$endExpectation()); | |
| } | |
| throw peg$buildStructuredError( | |
| peg$maxFailExpected, | |
| peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, | |
| peg$maxFailPos < input.length | |
| ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) | |
| : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) | |
| ); | |
| } | |
| if (options.peg$library) { | |
| return /** @type {any} */ ({ | |
| peg$result, | |
| peg$currPos, | |
| peg$FAILED, | |
| peg$maxFailExpected, | |
| peg$maxFailPos, | |
| peg$success, | |
| peg$throw: peg$success ? undefined : peg$throw, | |
| }); | |
| } | |
| if (peg$success) { | |
| return peg$result; | |
| } else { | |
| peg$throw(); | |
| } | |
| } | |
| module.exports = { | |
| StartRules: ["start"], | |
| SyntaxError: peg$SyntaxError, | |
| parse: peg$parse, | |
| }; | |
Xet Storage Details
- Size:
- 114 kB
- Xet hash:
- f35f8baf5448361ccf8d6fc4dff17d4a83bf7dc6b2036453e741e5acb47a0ab9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.