UNPKG

ccgjs

Version:

A combinatory categorial grammar (CCG) library for the web.

1,731 lines (1,586 loc) 54.2 kB
// @ts-nocheck // Generated by PEG.js v. 0.10.0 (ts-pegjs plugin v. 0.2.7 ) // // https://pegjs.org/ https://github.com/metadevpro/ts-pegjs "use strict"; export interface IFilePosition { offset: number; line: number; column: number; } export interface IFileRange { start: IFilePosition; end: IFilePosition; } export interface ILiteralExpectation { type: "literal"; text: string; ignoreCase: boolean; } export interface IClassParts extends Array<string | IClassParts> {} export interface IClassExpectation { type: "class"; parts: IClassParts; inverted: boolean; ignoreCase: boolean; } export interface IAnyExpectation { type: "any"; } export interface IEndExpectation { type: "end"; } export interface IOtherExpectation { type: "other"; description: string; } export type Expectation = ILiteralExpectation | IClassExpectation | IAnyExpectation | IEndExpectation | IOtherExpectation; export class SyntaxError extends Error { public static buildMessage(expected: Expectation[], found: string | null) { function hex(ch: string): string { return ch.charCodeAt(0).toString(16).toUpperCase(); } function literalEscape(s: string): string { return 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: string): string { return 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) ); } function describeExpectation(expectation: Expectation) { switch (expectation.type) { case "literal": return "\"" + literalEscape(expectation.text) + "\""; case "class": const escapedParts = expectation.parts.map((part) => { return Array.isArray(part) ? classEscape(part[0] as string) + "-" + classEscape(part[1] as string) : classEscape(part); }); return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; case "any": return "any character"; case "end": return "end of input"; case "other": return expectation.description; } } function describeExpected(expected1: Expectation[]) { const descriptions = expected1.map(describeExpectation); let i: number; let j: number; descriptions.sort(); if (descriptions.length > 0) { for (i = 1, j = 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(found1: string | null) { return found1 ? "\"" + literalEscape(found1) + "\"" : "end of input"; } return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; } public message: string; public expected: Expectation[]; public found: string | null; public location: IFileRange; public name: string; constructor(message: string, expected: Expectation[], found: string | null, location: IFileRange) { super(); this.message = message; this.expected = expected; this.found = found; this.location = location; this.name = "SyntaxError"; if (typeof (Error as any).captureStackTrace === "function") { (Error as any).captureStackTrace(this, SyntaxError); } } } export interface ICached { nextPos: number; result: any; } function peg$parse(input: string, options?: IParseOptions) { options = options !== undefined ? options : {}; const peg$FAILED: Readonly<{}> = {}; const peg$startRuleFunctions: {[id: string]: any} = { Start: peg$parseStart }; let peg$startRuleFunction: () => any = peg$parseStart; const peg$c0 = "("; const peg$c1 = peg$literalExpectation("(", false); const peg$c2 = ")"; const peg$c3 = peg$literalExpectation(")", false); const peg$c4 = function(node: any, left: any, right: any): any { return { node, left, right }; }; const peg$c5 = function(node: any, left: any, c: any): any { return { node, left, right: { node: c } }; }; const peg$c6 = function(node: any, c: any, right: any): any { return { node, left: { node: c }, right }; }; const peg$c7 = function(node: any, left: any): any { return { node, left }; }; const peg$c8 = function(node: any, c: any): any { return { node, ...c }; }; const peg$c9 = function(c1: any, c2: any): any { return { left: { node: c1 }, right: { node: c2 } }; }; const peg$c10 = function(c: any): any { return { left: { node: c } }; }; const peg$c11 = "<"; const peg$c12 = peg$literalExpectation("<", false); const peg$c13 = "T"; const peg$c14 = peg$literalExpectation("T", false); const peg$c15 = ">"; const peg$c16 = peg$literalExpectation(">", false); const peg$c17 = function(ccgCat: any, head: any, dtrs: any): any { return { type: "T", ccgCat, head, dtrs }; }; const peg$c18 = "0"; const peg$c19 = peg$literalExpectation("0", false); const peg$c20 = "1"; const peg$c21 = peg$literalExpectation("1", false); const peg$c22 = function(): any { return int(text()); }; const peg$c23 = "2"; const peg$c24 = peg$literalExpectation("2", false); const peg$c25 = "L"; const peg$c26 = peg$literalExpectation("L", false); const peg$c27 = function(ccgCat: any, modPOSTag: any, origPOSTag: any, word: any, predArgCat: any): any { return { type: "L", ccgCat, modPOSTag, origPOSTag, word, predArgCat, }; }; const peg$c28 = "/"; const peg$c29 = peg$literalExpectation("/", false); const peg$c30 = "\\"; const peg$c31 = peg$literalExpectation("\\", false); const peg$c32 = function(): any { return text(); }; const peg$c33 = /^[A-Za-z]/; const peg$c34 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false); const peg$c35 = "["; const peg$c36 = peg$literalExpectation("[", false); const peg$c37 = /^[A-Za-z,]/; const peg$c38 = peg$classExpectation([["A", "Z"], ["a", "z"], ","], false, false); const peg$c39 = "]"; const peg$c40 = peg$literalExpectation("]", false); const peg$c41 = /^[A-Z]/; const peg$c42 = peg$classExpectation([["A", "Z"]], false, false); const peg$c43 = /^[A-Za-z0-9]/; const peg$c44 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"]], false, false); const peg$c45 = peg$otherExpectation("whitespace"); const peg$c46 = /^[ \t\n\r]/; const peg$c47 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); const peg$c48 = peg$otherExpectation("whitespaces"); let peg$currPos = 0; let peg$savedPos = 0; const peg$posDetailsCache = [{ line: 1, column: 1 }]; let peg$maxFailPos = 0; let peg$maxFailExpected: Expectation[] = []; let peg$silentFails = 0; const peg$resultsCache: {[id: number]: ICached} = {}; let peg$result; if (options.startRule !== undefined) { 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(): string { return input.substring(peg$savedPos, peg$currPos); } function location(): IFileRange { return peg$computeLocation(peg$savedPos, peg$currPos); } function expected(description: string, location1?: IFileRange) { location1 = location1 !== undefined ? location1 : peg$computeLocation(peg$savedPos, peg$currPos); throw peg$buildStructuredError( [peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location1 ); } function error(message: string, location1?: IFileRange) { location1 = location1 !== undefined ? location1 : peg$computeLocation(peg$savedPos, peg$currPos); throw peg$buildSimpleError(message, location1); } function peg$literalExpectation(text1: string, ignoreCase: boolean): ILiteralExpectation { return { type: "literal", text: text1, ignoreCase: ignoreCase }; } function peg$classExpectation(parts: IClassParts, inverted: boolean, ignoreCase: boolean): IClassExpectation { return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; } function peg$anyExpectation(): IAnyExpectation { return { type: "any" }; } function peg$endExpectation(): IEndExpectation { return { type: "end" }; } function peg$otherExpectation(description: string): IOtherExpectation { return { type: "other", description: description }; } function peg$computePosDetails(pos: number) { let details = peg$posDetailsCache[pos]; let p; if (details) { return details; } else { p = pos - 1; while (!peg$posDetailsCache[p]) { 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: number, endPos: number): IFileRange { const startPosDetails = peg$computePosDetails(startPos); const endPosDetails = peg$computePosDetails(endPos); return { start: { offset: startPos, line: startPosDetails.line, column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, column: endPosDetails.column } }; } function peg$fail(expected1: Expectation) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected1); } function peg$buildSimpleError(message: string, location1: IFileRange) { return new SyntaxError(message, [], "", location1); } function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: IFileRange) { return new SyntaxError( SyntaxError.buildMessage(expected1, found), expected1, found, location1 ); } function peg$parseStart(): any { let s0; const key = peg$currPos * 15 + 0; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$parseTree(); peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseTree(): any { let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; const key = peg$currPos * 15 + 1; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeT(); if (s3 !== peg$FAILED) { s4 = peg$parseTree(); if (s4 !== peg$FAILED) { s5 = peg$parseTree(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s6 = peg$c2; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s6 !== peg$FAILED) { s7 = peg$parse__(); if (s7 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c4(s3, s4, s5); s0 = s1; } 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; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeT(); if (s3 !== peg$FAILED) { s4 = peg$parseTree(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s5 = peg$c0; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s5 !== peg$FAILED) { s6 = peg$parseNodeL(); if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s7 = peg$c2; peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s7 !== peg$FAILED) { s8 = peg$parse__(); if (s8 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s9 = peg$c2; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c5(s3, s4, s6); s0 = s1; } 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; } } 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; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeT(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s4 = peg$c0; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s4 !== peg$FAILED) { s5 = peg$parseNodeL(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s6 = peg$c2; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s6 !== peg$FAILED) { s7 = peg$parseTree(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s8 = peg$c2; peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s8 !== peg$FAILED) { s9 = peg$parse__(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c6(s3, s5, s7); s0 = s1; } 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; } } 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$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeT(); if (s3 !== peg$FAILED) { s4 = peg$parseTree(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s5 = peg$c2; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c7(s3, s4); s0 = s1; } 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; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeT(); if (s3 !== peg$FAILED) { s4 = peg$parseNode(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s5 = peg$c2; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c8(s3, s4); s0 = s1; } 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; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseNode(): any { let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; const key = peg$currPos * 15 + 2; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeL(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s4 = peg$c2; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s4 !== peg$FAILED) { s5 = peg$parse__(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s6 = peg$c0; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s6 !== peg$FAILED) { s7 = peg$parseNodeL(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s8 = peg$c2; peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s8 !== peg$FAILED) { s9 = peg$parse__(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c9(s3, s7); s0 = s1; } 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; } } 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$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseNodeL(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s4 = peg$c2; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s4 !== peg$FAILED) { s5 = peg$parse__(); if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c10(s3); s0 = s1; } 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; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseNodeT(): any { let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; const key = peg$currPos * 15 + 3; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 60) { s2 = peg$c11; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c12); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 84) { s4 = peg$c13; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c14); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); if (s5 !== peg$FAILED) { s6 = peg$parseCCGCat(); if (s6 !== peg$FAILED) { s7 = peg$parse_(); if (s7 !== peg$FAILED) { s8 = peg$parseHead(); if (s8 !== peg$FAILED) { s9 = peg$parse_(); if (s9 !== peg$FAILED) { s10 = peg$parseDtrs(); if (s10 !== peg$FAILED) { s11 = peg$parse__(); if (s11 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 62) { s12 = peg$c15; peg$currPos++; } else { s12 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s12 !== peg$FAILED) { s13 = peg$parse__(); if (s13 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c17(s6, s8, s10); s0 = s1; } 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; } } 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; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseHead(): any { let s0, s1; const key = peg$currPos * 15 + 4; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 48) { s1 = peg$c18; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c19); } } if (s1 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 49) { s1 = peg$c20; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c21); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c22(); } s0 = s1; peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseDtrs(): any { let s0, s1; const key = peg$currPos * 15 + 5; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 48) { s1 = peg$c18; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c19); } } if (s1 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 49) { s1 = peg$c20; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c21); } } if (s1 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 50) { s1 = peg$c23; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c24); } } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c22(); } s0 = s1; peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseNodeL(): any { let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; const key = peg$currPos * 15 + 6; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 60) { s2 = peg$c11; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c12); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 76) { s4 = peg$c25; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c26); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); if (s5 !== peg$FAILED) { s6 = peg$parseCCGCat(); if (s6 !== peg$FAILED) { s7 = peg$parse_(); if (s7 !== peg$FAILED) { s8 = peg$parsePOSTag(); if (s8 !== peg$FAILED) { s9 = peg$parse_(); if (s9 !== peg$FAILED) { s10 = peg$parsePOSTag(); if (s10 !== peg$FAILED) { s11 = peg$parse_(); if (s11 !== peg$FAILED) { s12 = peg$parseWord(); if (s12 !== peg$FAILED) { s13 = peg$parse_(); if (s13 !== peg$FAILED) { s14 = peg$parseCCGCat(); if (s14 !== peg$FAILED) { s15 = peg$parse__(); if (s15 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 62) { s16 = peg$c15; peg$currPos++; } else { s16 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s16 !== peg$FAILED) { s17 = peg$parse__(); if (s17 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c27(s6, s8, s10, s12, s14); s0 = s1; } 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; } } 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; } } 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; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseCCGCat(): any { let s0, s1, s2, s3, s4, s5; const key = peg$currPos * 15 + 7; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseCCGCat(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s4 = peg$c2; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s4 !== peg$FAILED) { s5 = peg$parseRightCat(); if (s5 !== peg$FAILED) { s2 = [s2, s3, s4, s5]; 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; } if (s1 === peg$FAILED) { s1 = peg$currPos; s2 = peg$parseLeftCat(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 40) { s3 = peg$c0; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s3 !== peg$FAILED) { s4 = peg$parseCCGCat(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s5 = peg$c2; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s5 !== peg$FAILED) { s2 = [s2, s3, s4, s5]; 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; } if (s1 === peg$FAILED) { s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 40) { s2 = peg$c0; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c1); } } if (s2 !== peg$FAILED) { s3 = peg$parseCCGCat(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { s4 = peg$c2; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s4 !== peg$FAILED) { s2 = [s2, s3, s4]; s1 = s2; } 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) { s1 = peg$currPos; s2 = peg$parseSingleCat(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 47) { s3 = peg$c28; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c29); } } if (s3 !== peg$FAILED) { s4 = peg$parseSingleCat(); if (s4 !== peg$FAILED) { s2 = [s2, s3, s4]; s1 = s2; } 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) { s1 = peg$currPos; s2 = peg$parseSingleCat(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 92) { s3 = peg$c30; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c31); } } if (s3 !== peg$FAILED) { s4 = peg$parseSingleCat(); if (s4 !== peg$FAILED) { s2 = [s2, s3, s4]; s1 = s2; } 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) { s1 = peg$parseSingleCat(); } } } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c32(); } s0 = s1; peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseLeftCat(): any { let s0, s1, s2; const key = peg$currPos * 15 + 8; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseSingleCat(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 47) { s2 = peg$c28; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c29); } } 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$currPos; s1 = peg$parseSingleCat(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 92) { s2 = peg$c30; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c31); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseRightCat(): any { let s0, s1, s2; const key = peg$currPos * 15 + 9; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 47) { s1 = peg$c28; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c29); } } if (s1 !== peg$FAILED) { s2 = peg$parseSingleCat(); 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$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c30; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c31); } } if (s1 !== peg$FAILED) { s2 = peg$parseSingleCat(); if (s2 !== peg$FAILED) { s1 = [s1, s2]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseSingleCat(): any { let s0, s1, s2, s3, s4; const key = peg$currPos * 15 + 10; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = []; if (peg$c33.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c34); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c33.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c34); } } } } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 91) { s2 = peg$c35; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c36); } } if (s2 !== peg$FAILED) { s3 = []; if (peg$c37.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c37.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } } } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { s4 = peg$c39; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c40); } } if (s4 !== peg$FAILED) { s1 = [s1, s2, s3, s4]; s0 = s1; } 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 = []; if (peg$c33.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c34); } } if (s1 !== peg$FAILED) { while (s1 !== peg$FAILED) { s0.push(s1); if (peg$c33.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c34); } } } } else { s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parsePOSTag(): any { let s0, s1, s2; const key = peg$currPos * 15 + 11; const cached: ICached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = []; if (peg$c41.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c42); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c41.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c42); } } } } else {