Spaces:
Running
Running
Download source/teaql-ts/src/parser/query-parser.generated.ts from teaql/browser-sqlite-playground: direct link, hf CLI and curl.
- Browser
- Download file 33.9 kB
-
https://huggingface.co/spaces/teaql/browser-sqlite-playground/resolve/main/source/teaql-ts/src/parser/query-parser.generated.ts
- Command line
-
hf download hf://spaces/teaql/browser-sqlite-playground/source/teaql-ts/src/parser/query-parser.generated.ts
-
curl -L -o query-parser.generated.ts https://huggingface.co/spaces/teaql/browser-sqlite-playground/resolve/main/source/teaql-ts/src/parser/query-parser.generated.ts
33.9 kB
| // @ts-nocheck -- generated by scripts/generate-query-parser.mjs | |
| // @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 = "["; | |
| const peg$c6 = "]"; | |
| const peg$c7 = "\""; | |
| const peg$c8 = "\\"; | |
| const peg$c9 = "'"; | |
| const peg$c10 = "-"; | |
| const peg$c11 = "true"; | |
| const peg$c12 = "false"; | |
| const peg$c13 = "null"; | |
| const peg$r0 = /^[^"\\]/; | |
| const peg$r1 = /^[^'\\]/; | |
| const peg$r2 = /^[0-9]/; | |
| const peg$r3 = /^[eE]/; | |
| const peg$r4 = /^[+\-]/; | |
| const peg$r5 = /^[A-Za-z_$]/; | |
| const peg$r6 = /^[A-Za-z0-9_$]/; | |
| const peg$r7 = /^[ \t\r\n]/; | |
| const peg$e0 = peg$literalExpectation(";", false); | |
| const peg$e1 = peg$literalExpectation(".", 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$literalExpectation("]", false); | |
| const peg$e7 = peg$literalExpectation("\"", false); | |
| const peg$e8 = peg$literalExpectation("\\", false); | |
| const peg$e9 = peg$anyExpectation(); | |
| const peg$e10 = peg$classExpectation(["\"", "\\"], true, false, false); | |
| const peg$e11 = peg$literalExpectation("'", false); | |
| const peg$e12 = peg$classExpectation(["'", "\\"], true, false, false); | |
| const peg$e13 = peg$literalExpectation("-", false); | |
| const peg$e14 = peg$classExpectation([["0", "9"]], false, false, false); | |
| const peg$e15 = peg$classExpectation(["e", "E"], false, false, false); | |
| const peg$e16 = peg$classExpectation(["+", "-"], false, false, false); | |
| const peg$e17 = peg$literalExpectation("true", false); | |
| const peg$e18 = peg$literalExpectation("false", false); | |
| const peg$e19 = peg$literalExpectation("null", false); | |
| const peg$e20 = peg$classExpectation([["A", "Z"], ["a", "z"], "_", "$"], false, false, false); | |
| const peg$e21 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "_", "$"], false, false, false); | |
| const peg$e22 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false, false); | |
| function peg$f0(value) { return value; } | |
| function peg$f1(target, calls) { return expression(target, calls); } | |
| function peg$f2(method, args) { | |
| return { type: "Call", method, arguments: args || [] }; | |
| } | |
| function peg$f3(head, tail) { return [head, ...tail.map(item => item[3])]; } | |
| function peg$f4(values) { return values || []; } | |
| function peg$f5(value) { return JSON.parse(value); } | |
| function peg$f6(escaped) { return escaped; } | |
| function peg$f7(chars) { return chars.join(""); } | |
| function peg$f8(value) { return Number(value); } | |
| function peg$f9() { return true; } | |
| function peg$f10() { return false; } | |
| function peg$f11() { return null; } | |
| function peg$f12(value) { return value; } | |
| 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, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = peg$parse_(); | |
| s2 = peg$parseExpression(); | |
| if (s2 !== peg$FAILED) { | |
| s3 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 59) { | |
| s4 = peg$c0; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e0); } | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = null; | |
| } | |
| s5 = peg$parse_(); | |
| peg$savedPos = s0; | |
| s0 = peg$f0(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseExpression() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| s1 = peg$parseIdentifier(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s5 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e1); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parse_(); | |
| s7 = peg$parseCall(); | |
| 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; | |
| } | |
| if (s3 !== peg$FAILED) { | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s5 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e1); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parse_(); | |
| s7 = peg$parseCall(); | |
| 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 { | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f1(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseCall() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| s1 = peg$parseIdentifier(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 40) { | |
| s3 = peg$c2; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e2); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = peg$parse_(); | |
| s5 = peg$parseArguments(); | |
| if (s5 === peg$FAILED) { | |
| s5 = null; | |
| } | |
| s6 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 41) { | |
| s7 = peg$c3; | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e3); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f2(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$parseArguments() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| s1 = peg$parseValue(); | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| s4 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s5 = peg$c4; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parse_(); | |
| s7 = peg$parseValue(); | |
| 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; | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| s4 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 44) { | |
| s5 = peg$c4; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e4); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s6 = peg$parse_(); | |
| s7 = peg$parseValue(); | |
| 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; | |
| } | |
| } | |
| peg$savedPos = s0; | |
| s0 = peg$f3(s1, s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseValue() { | |
| let s0; | |
| s0 = peg$parseExpression(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseArray(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseDoubleQuotedString(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseSingleQuotedString(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseNumber(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseBoolean(); | |
| if (s0 === peg$FAILED) { | |
| s0 = peg$parseNull(); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseArray() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 91) { | |
| s1 = peg$c5; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e5); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$parse_(); | |
| s3 = peg$parseArguments(); | |
| if (s3 === peg$FAILED) { | |
| s3 = null; | |
| } | |
| s4 = peg$parse_(); | |
| if (input.charCodeAt(peg$currPos) === 93) { | |
| s5 = peg$c6; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e6); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f4(s3); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseDoubleQuotedString() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s3 = peg$c7; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e7); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s6 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e8); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s7 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s6 = [s6, s7]; | |
| s5 = s6; | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 === peg$FAILED) { | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r0.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| } | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s6 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e8); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s7 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s6 = [s6, s7]; | |
| s5 = s6; | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 === peg$FAILED) { | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r0.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e10); } | |
| } | |
| } | |
| } | |
| if (input.charCodeAt(peg$currPos) === 34) { | |
| s5 = peg$c7; | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e7); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| s3 = [s3, s4, s5]; | |
| s2 = s3; | |
| } 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) { | |
| peg$savedPos = s0; | |
| s1 = peg$f5(s1); | |
| } | |
| s0 = s1; | |
| return s0; | |
| } | |
| function peg$parseSingleQuotedString() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s1 = peg$c9; | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = []; | |
| s3 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s4 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e8); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s5 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s3; | |
| s3 = peg$f6(s5); | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 === peg$FAILED) { | |
| s3 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s3)) { | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| } | |
| while (s3 !== peg$FAILED) { | |
| s2.push(s3); | |
| s3 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 92) { | |
| s4 = peg$c8; | |
| peg$currPos++; | |
| } else { | |
| s4 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e8); } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| if (input.length > peg$currPos) { | |
| s5 = input.charAt(peg$currPos); | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e9); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| peg$savedPos = s3; | |
| s3 = peg$f6(s5); | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s3; | |
| s3 = peg$FAILED; | |
| } | |
| if (s3 === peg$FAILED) { | |
| s3 = input.charAt(peg$currPos); | |
| if (peg$r1.test(s3)) { | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e12); } | |
| } | |
| } | |
| } | |
| if (input.charCodeAt(peg$currPos) === 39) { | |
| s3 = peg$c9; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e11); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f7(s2); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseNumber() { | |
| let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$currPos; | |
| if (input.charCodeAt(peg$currPos) === 45) { | |
| s3 = peg$c10; | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e13); } | |
| } | |
| if (s3 === peg$FAILED) { | |
| s3 = null; | |
| } | |
| s4 = peg$currPos; | |
| s5 = []; | |
| s6 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s6)) { | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| while (s6 !== peg$FAILED) { | |
| s5.push(s6); | |
| s6 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s6)) { | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| } | |
| } else { | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 !== peg$FAILED) { | |
| if (input.charCodeAt(peg$currPos) === 46) { | |
| s6 = peg$c1; | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e1); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| s7 = []; | |
| s8 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s8)) { | |
| peg$currPos++; | |
| } else { | |
| s8 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s8 !== peg$FAILED) { | |
| while (s8 !== peg$FAILED) { | |
| s7.push(s8); | |
| s8 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s8)) { | |
| peg$currPos++; | |
| } else { | |
| s8 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| } | |
| } else { | |
| s7 = peg$FAILED; | |
| } | |
| if (s7 !== peg$FAILED) { | |
| s5 = [s5, s6, s7]; | |
| s4 = s5; | |
| } else { | |
| peg$currPos = s4; | |
| s4 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s4; | |
| s4 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s4; | |
| s4 = peg$FAILED; | |
| } | |
| if (s4 === peg$FAILED) { | |
| s4 = []; | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s5 !== peg$FAILED) { | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s5)) { | |
| peg$currPos++; | |
| } else { | |
| s5 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| } | |
| } else { | |
| s4 = peg$FAILED; | |
| } | |
| } | |
| if (s4 !== peg$FAILED) { | |
| s5 = peg$currPos; | |
| s6 = input.charAt(peg$currPos); | |
| if (peg$r3.test(s6)) { | |
| peg$currPos++; | |
| } else { | |
| s6 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e15); } | |
| } | |
| if (s6 !== peg$FAILED) { | |
| s7 = input.charAt(peg$currPos); | |
| if (peg$r4.test(s7)) { | |
| peg$currPos++; | |
| } else { | |
| s7 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e16); } | |
| } | |
| if (s7 === peg$FAILED) { | |
| s7 = null; | |
| } | |
| s8 = []; | |
| s9 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s9)) { | |
| peg$currPos++; | |
| } else { | |
| s9 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| if (s9 !== peg$FAILED) { | |
| while (s9 !== peg$FAILED) { | |
| s8.push(s9); | |
| s9 = input.charAt(peg$currPos); | |
| if (peg$r2.test(s9)) { | |
| peg$currPos++; | |
| } else { | |
| s9 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e14); } | |
| } | |
| } | |
| } else { | |
| s8 = peg$FAILED; | |
| } | |
| if (s8 !== peg$FAILED) { | |
| s6 = [s6, s7, s8]; | |
| s5 = s6; | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s5; | |
| s5 = peg$FAILED; | |
| } | |
| if (s5 === peg$FAILED) { | |
| s5 = null; | |
| } | |
| s3 = [s3, s4, s5]; | |
| s2 = s3; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = input.substring(s1, peg$currPos); | |
| } else { | |
| s1 = s2; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f8(s1); | |
| } | |
| s0 = s1; | |
| return s0; | |
| } | |
| function peg$parseBoolean() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 4) === peg$c11) { | |
| s1 = peg$c11; | |
| peg$currPos += 4; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e17); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| s3 = peg$parseIdentifierPart(); | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f9(); | |
| } 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, 5) === peg$c12) { | |
| s1 = peg$c12; | |
| peg$currPos += 5; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e18); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| s3 = peg$parseIdentifierPart(); | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f10(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } | |
| return s0; | |
| } | |
| function peg$parseNull() { | |
| let s0, s1, s2, s3; | |
| s0 = peg$currPos; | |
| if (input.substr(peg$currPos, 4) === peg$c13) { | |
| s1 = peg$c13; | |
| peg$currPos += 4; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e19); } | |
| } | |
| if (s1 !== peg$FAILED) { | |
| s2 = peg$currPos; | |
| peg$silentFails++; | |
| s3 = peg$parseIdentifierPart(); | |
| peg$silentFails--; | |
| if (s3 === peg$FAILED) { | |
| s2 = undefined; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s0 = peg$f11(); | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| } else { | |
| peg$currPos = s0; | |
| s0 = peg$FAILED; | |
| } | |
| return s0; | |
| } | |
| function peg$parseIdentifier() { | |
| let s0, s1, s2, s3, s4, s5; | |
| s0 = peg$currPos; | |
| s1 = peg$currPos; | |
| s2 = peg$currPos; | |
| s3 = input.charAt(peg$currPos); | |
| if (peg$r5.test(s3)) { | |
| peg$currPos++; | |
| } else { | |
| s3 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e20); } | |
| } | |
| if (s3 !== peg$FAILED) { | |
| s4 = []; | |
| s5 = peg$parseIdentifierPart(); | |
| while (s5 !== peg$FAILED) { | |
| s4.push(s5); | |
| s5 = peg$parseIdentifierPart(); | |
| } | |
| s3 = [s3, s4]; | |
| s2 = s3; | |
| } else { | |
| peg$currPos = s2; | |
| s2 = peg$FAILED; | |
| } | |
| if (s2 !== peg$FAILED) { | |
| s1 = input.substring(s1, peg$currPos); | |
| } else { | |
| s1 = s2; | |
| } | |
| if (s1 !== peg$FAILED) { | |
| peg$savedPos = s0; | |
| s1 = peg$f12(s1); | |
| } | |
| s0 = s1; | |
| return s0; | |
| } | |
| function peg$parseIdentifierPart() { | |
| let s0; | |
| s0 = input.charAt(peg$currPos); | |
| if (peg$r6.test(s0)) { | |
| peg$currPos++; | |
| } else { | |
| s0 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e21); } | |
| } | |
| return s0; | |
| } | |
| function peg$parse_() { | |
| let s0, s1; | |
| s0 = []; | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r7.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e22); } | |
| } | |
| while (s1 !== peg$FAILED) { | |
| s0.push(s1); | |
| s1 = input.charAt(peg$currPos); | |
| if (peg$r7.test(s1)) { | |
| peg$currPos++; | |
| } else { | |
| s1 = peg$FAILED; | |
| if (peg$silentFails === 0) { peg$fail(peg$e22); } | |
| } | |
| } | |
| return s0; | |
| } | |
| function expression(target, calls) { | |
| return { type: "CallChain", target, calls: calls.map(item => item[3]) }; | |
| } | |
| 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(); | |
| } | |
| } | |
| const peg$allowedStartRules = [ | |
| "Start" | |
| ]; | |
| export { | |
| peg$allowedStartRules as StartRules, | |
| peg$SyntaxError as SyntaxError, | |
| peg$parse as parse | |
| }; | |