diff --git a/.eslintignore b/.eslintignore index f1c81f1..951587b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -11,5 +11,8 @@ src/*/translation_alternates.ts src/*/psalm_cb.ts +# Grammar files +src/*/grammar.js + # Spec files (for now) src/*/spec.ts diff --git a/bin/02.compile.ts b/bin/02.compile.ts index 7cb6d62..5057a12 100644 --- a/bin/02.compile.ts +++ b/bin/02.compile.ts @@ -100,5 +100,5 @@ function add_peg(lang: string, prefix: string) { throw new Error("Unreplaced options"); } - fs.writeFileSync(`js/${lang}/grammar.js`, peg); + fs.writeFileSync(`src/${lang}/grammar.js`, peg); } diff --git a/package.json b/package.json index 0f1045d..356500e 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,10 @@ }, "homepage": "https://github.com/faithfulsource/bible-passage-reference-parser", "scripts": { - "build": "tsc && ts-node bin/02.compile.ts", + "build": "tsc", "format": "prettier --write .", "format:check": "prettier --check .", + "gen:grammar": "ts-node bin/02.compile.ts", "gen:lang": "ts-node bin/01.add_lang.ts", "lint": "eslint .", "lint:fix": "eslint . --fix", diff --git a/src/ar/grammar.js b/src/ar/grammar.js new file mode 100644 index 0000000..a4737d4 --- /dev/null +++ b/src/ar/grammar.js @@ -0,0 +1,4002 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0641\u0635\u0644", + peg$c61 = peg$literalExpectation("\u0641\u0635\u0644", true), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "\u0622\u064A\u0629", + peg$c64 = peg$literalExpectation("\u0622\u064A\u0629", true), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "\u060C", + peg$c73 = peg$literalExpectation("\u060C", true), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "to", + peg$c78 = peg$literalExpectation("to", false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c63) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c72) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c72) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ar/spec.ts b/src/ar/spec.ts index 1a2a6d9..268b15f 100644 --- a/src/ar/spec.ts +++ b/src/ar/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ar"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ascii/grammar.js b/src/ascii/grammar.js new file mode 100644 index 0000000..358519a --- /dev/null +++ b/src/ascii/grammar.js @@ -0,0 +1,4830 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z0-9]/, + peg$c43 = peg$classExpectation([["a", "z"], ["0", "9"]], false, false), + peg$c44 = "f", + peg$c45 = peg$literalExpectation("f", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "ch", + peg$c65 = peg$literalExpectation("ch", false), + peg$c66 = "apters", + peg$c67 = peg$literalExpectation("apters", false), + peg$c68 = "apter", + peg$c69 = peg$literalExpectation("apter", false), + peg$c70 = "apts", + peg$c71 = peg$literalExpectation("apts", false), + peg$c72 = "pts", + peg$c73 = peg$literalExpectation("pts", false), + peg$c74 = "apt", + peg$c75 = peg$literalExpectation("apt", false), + peg$c76 = "aps", + peg$c77 = peg$literalExpectation("aps", false), + peg$c78 = "ap", + peg$c79 = peg$literalExpectation("ap", false), + peg$c80 = "p", + peg$c81 = peg$literalExpectation("p", false), + peg$c82 = "s", + peg$c83 = peg$literalExpectation("s", false), + peg$c84 = "a", + peg$c85 = peg$literalExpectation("a", false), + peg$c86 = function() { return {"type": "c_explicit"} }, + peg$c87 = "v", + peg$c88 = peg$literalExpectation("v", false), + peg$c89 = "erses", + peg$c90 = peg$literalExpectation("erses", false), + peg$c91 = "erse", + peg$c92 = peg$literalExpectation("erse", false), + peg$c93 = "er", + peg$c94 = peg$literalExpectation("er", false), + peg$c95 = "ss", + peg$c96 = peg$literalExpectation("ss", false), + peg$c97 = function() { return {"type": "v_explicit"} }, + peg$c98 = ":", + peg$c99 = peg$literalExpectation(":", false), + peg$c100 = /^["']/, + peg$c101 = peg$classExpectation(["\"", "'"], false, false), + peg$c102 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c103 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c104 = "and", + peg$c105 = peg$literalExpectation("and", false), + peg$c106 = "compare", + peg$c107 = peg$literalExpectation("compare", false), + peg$c108 = "cf", + peg$c109 = peg$literalExpectation("cf", false), + peg$c110 = "see", + peg$c111 = peg$literalExpectation("see", false), + peg$c112 = "also", + peg$c113 = peg$literalExpectation("also", false), + peg$c114 = function() { return "" }, + peg$c115 = /^[\-\u2013\u2014]/, + peg$c116 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c117 = "through", + peg$c118 = peg$literalExpectation("through", false), + peg$c119 = "thru", + peg$c120 = peg$literalExpectation("thru", false), + peg$c121 = "to", + peg$c122 = peg$literalExpectation("to", false), + peg$c123 = "title", + peg$c124 = peg$literalExpectation("title", false), + peg$c125 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = "from", + peg$c127 = peg$literalExpectation("from", false), + peg$c128 = "of", + peg$c129 = peg$literalExpectation("of", false), + peg$c130 = "in", + peg$c131 = peg$literalExpectation("in", false), + peg$c132 = "the", + peg$c133 = peg$literalExpectation("the", false), + peg$c134 = "book", + peg$c135 = peg$literalExpectation("book", false), + peg$c136 = /^[([]/, + peg$c137 = peg$classExpectation(["(", "["], false, false), + peg$c138 = /^[)\]]/, + peg$c139 = peg$classExpectation([")", "]"], false, false), + peg$c140 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c141 = "\x1E", + peg$c142 = peg$literalExpectation("\x1E", false), + peg$c143 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c144 = ",000", + peg$c145 = peg$literalExpectation(",000", false), + peg$c146 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c147 = /^[^\x1F\x1E([]/, + peg$c148 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c149 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c150 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c151 = /^[\s\xa0*]/, + peg$c152 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c102 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s4 = peg$c44; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + 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 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s6 = peg$c44; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c64) { + s3 = peg$c64; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c66) { + s4 = peg$c66; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s4 = peg$c68; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c70) { + s5 = peg$c70; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c72) { + s5 = peg$c72; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c74) { + s5 = peg$c74; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c76) { + s5 = peg$c76; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c78) { + s5 = peg$c78; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 112) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s5 = peg$c84; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c87; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c89) { + s4 = peg$c89; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s4 = peg$c91; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c93) { + s5 = peg$c93; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c95) { + s5 = peg$c95; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c87; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c123) { + s2 = peg$c123; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c126) { + s2 = peg$c126; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s2 = peg$c128; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c130) { + s2 = peg$c130; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c131); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c132) { + s5 = peg$c132; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c133); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c134) { + s7 = peg$c134; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c135); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s9 = peg$c128; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c136.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c138.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c139); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c141; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c141; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c143(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c146(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c149(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c136.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c150(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ascii/spec.ts b/src/ascii/spec.ts index 1463c70..2c1b688 100644 --- a/src/ascii/spec.ts +++ b/src/ascii/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ascii"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/bg/grammar.js b/src/bg/grammar.js new file mode 100644 index 0000000..58b9a78 --- /dev/null +++ b/src/bg/grammar.js @@ -0,0 +1,4081 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "\u0438", + peg$c41 = peg$literalExpectation("\u0438", true), + peg$c42 = "\u0441\u043B", + peg$c43 = peg$literalExpectation("\u0441\u043B", true), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a\u0430\u0432\u0431]/i, + peg$c60 = peg$classExpectation(["a", "\u0430", "\u0432", "\u0431"], false, true), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "\u0433\u043B", + peg$c63 = peg$literalExpectation("\u0433\u043B", true), + peg$c64 = "\u0430\u0432\u0430", + peg$c65 = peg$literalExpectation("\u0430\u0432\u0430", true), + peg$c66 = "\u0430\u0432\u0438", + peg$c67 = peg$literalExpectation("\u0430\u0432\u0438", true), + peg$c68 = "", + peg$c69 = function() { return {"type": "c_explicit"} }, + peg$c70 = "\u0441\u0442", + peg$c71 = peg$literalExpectation("\u0441\u0442", true), + peg$c72 = function() { return {"type": "v_explicit"} }, + peg$c73 = ":", + peg$c74 = peg$literalExpectation(":", false), + peg$c75 = /^["']/, + peg$c76 = peg$classExpectation(["\"", "'"], false, false), + peg$c77 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c78 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c79 = function() { return "" }, + peg$c80 = /^[\-\u2013\u2014]/, + peg$c81 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c82 = "title", + peg$c83 = peg$literalExpectation("title", false), + peg$c84 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c85 = "from", + peg$c86 = peg$literalExpectation("from", false), + peg$c87 = "of", + peg$c88 = peg$literalExpectation("of", false), + peg$c89 = "in", + peg$c90 = peg$literalExpectation("in", false), + peg$c91 = "the", + peg$c92 = peg$literalExpectation("the", false), + peg$c93 = "book", + peg$c94 = peg$literalExpectation("book", false), + peg$c95 = /^[([]/, + peg$c96 = peg$classExpectation(["(", "["], false, false), + peg$c97 = /^[)\]]/, + peg$c98 = peg$classExpectation([")", "]"], false, false), + peg$c99 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "\x1E", + peg$c101 = peg$literalExpectation("\x1E", false), + peg$c102 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = ",000", + peg$c104 = peg$literalExpectation(",000", false), + peg$c105 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = /^[^\x1F\x1E([]/, + peg$c107 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c108 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = /^[\s\xa0*]/, + peg$c111 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c77 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c42) { + s5 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c42) { + s8 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c62) { + s3 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c64) { + s4 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c66) { + s4 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$c68; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c70) { + s2 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c77.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c77.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c82) { + s2 = peg$c82; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c85) { + s2 = peg$c85; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s2 = peg$c87; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c89) { + s2 = peg$c89; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c91) { + s5 = peg$c91; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c93) { + s7 = peg$c93; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s9 = peg$c87; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c95.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c100; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c100; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/bg/spec.ts b/src/bg/spec.ts index e221713..d78297b 100644 --- a/src/bg/spec.ts +++ b/src/bg/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/bg"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ceb/grammar.js b/src/ceb/grammar.js new file mode 100644 index 0000000..a071e01 --- /dev/null +++ b/src/ceb/grammar.js @@ -0,0 +1,4020 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "ug", + peg$c73 = peg$literalExpectation("ug", false), + peg$c74 = "og", + peg$c75 = peg$literalExpectation("og", false), + peg$c76 = function() { return "" }, + peg$c77 = /^[\-\u2013\u2014]/, + peg$c78 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c72) { + s2 = peg$c72; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c74) { + s2 = peg$c74; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c72) { + s2 = peg$c72; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c74) { + s2 = peg$c74; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c76(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ceb/spec.ts b/src/ceb/spec.ts index 0168007..19e327d 100644 --- a/src/ceb/spec.ts +++ b/src/ceb/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ceb"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/core/spec.ts b/src/core/spec.ts index 980d6cc..80a4971 100644 --- a/src/core/spec.ts +++ b/src/core/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/en"; +import { bcv_parser } from "../en"; describe("Pre-parsing", () => { let p: InstanceType; diff --git a/src/cs/grammar.js b/src/cs/grammar.js new file mode 100644 index 0000000..051cedc --- /dev/null +++ b/src/cs/grammar.js @@ -0,0 +1,4140 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "kap", + peg$c61 = peg$literalExpectation("kap", false), + peg$c62 = "itola", + peg$c63 = peg$literalExpectation("itola", false), + peg$c64 = "itoly", + peg$c65 = peg$literalExpectation("itoly", false), + peg$c66 = "itol", + peg$c67 = peg$literalExpectation("itol", false), + peg$c68 = function() { return {"type": "c_explicit"} }, + peg$c69 = "ver", + peg$c70 = peg$literalExpectation("ver", false), + peg$c71 = /^[\u0161s]/i, + peg$c72 = peg$classExpectation(["\u0161", "s"], false, true), + peg$c73 = "e", + peg$c74 = peg$literalExpectation("e", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "a", + peg$c83 = peg$literalExpectation("a", false), + peg$c84 = "srv", + peg$c85 = peg$literalExpectation("srv", false), + peg$c86 = function() { return "" }, + peg$c87 = /^[\-\u2013\u2014]/, + peg$c88 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c89 = "titul", + peg$c90 = peg$literalExpectation("titul", false), + peg$c91 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c92 = "from", + peg$c93 = peg$literalExpectation("from", false), + peg$c94 = "of", + peg$c95 = peg$literalExpectation("of", false), + peg$c96 = "in", + peg$c97 = peg$literalExpectation("in", false), + peg$c98 = "the", + peg$c99 = peg$literalExpectation("the", false), + peg$c100 = "book", + peg$c101 = peg$literalExpectation("book", false), + peg$c102 = /^[([]/, + peg$c103 = peg$classExpectation(["(", "["], false, false), + peg$c104 = /^[)\]]/, + peg$c105 = peg$classExpectation([")", "]"], false, false), + peg$c106 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = "\x1E", + peg$c108 = peg$literalExpectation("\x1E", false), + peg$c109 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = ",000", + peg$c111 = peg$literalExpectation(",000", false), + peg$c112 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = /^[^\x1F\x1E([]/, + peg$c114 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c115 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c116 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = /^[\s\xa0*]/, + peg$c118 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c60) { + s3 = peg$c60; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c62) { + s4 = peg$c62; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c64) { + s4 = peg$c64; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c66) { + s4 = peg$c66; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c69) { + s3 = peg$c69; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + if (peg$c71.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s5 = peg$c73; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 97) { + s2 = peg$c82; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 97) { + s2 = peg$c82; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c89) { + s2 = peg$c89; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c91(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s2 = peg$c92; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c98) { + s5 = peg$c98; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s7 = peg$c100; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s9 = peg$c94; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c107; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c107; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c115(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c102.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/cs/spec.ts b/src/cs/spec.ts index e2cb29a..273b987 100644 --- a/src/cs/spec.ts +++ b/src/cs/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/cs"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/da/grammar.js b/src/da/grammar.js new file mode 100644 index 0000000..95dd42f --- /dev/null +++ b/src/da/grammar.js @@ -0,0 +1,4087 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "kap", + peg$c61 = peg$literalExpectation("kap", false), + peg$c62 = "itlerne", + peg$c63 = peg$literalExpectation("itlerne", false), + peg$c64 = "itel", + peg$c65 = peg$literalExpectation("itel", false), + peg$c66 = function() { return {"type": "c_explicit"} }, + peg$c67 = "v", + peg$c68 = peg$literalExpectation("v", false), + peg$c69 = "ers", + peg$c70 = peg$literalExpectation("ers", false), + peg$c71 = function() { return {"type": "v_explicit"} }, + peg$c72 = ":", + peg$c73 = peg$literalExpectation(":", false), + peg$c74 = /^["']/, + peg$c75 = peg$classExpectation(["\"", "'"], false, false), + peg$c76 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c77 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c78 = "og", + peg$c79 = peg$literalExpectation("og", false), + peg$c80 = "jf", + peg$c81 = peg$literalExpectation("jf", false), + peg$c82 = function() { return "" }, + peg$c83 = /^[\-\u2013\u2014]/, + peg$c84 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c85 = "title", + peg$c86 = peg$literalExpectation("title", false), + peg$c87 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c88 = "from", + peg$c89 = peg$literalExpectation("from", false), + peg$c90 = "of", + peg$c91 = peg$literalExpectation("of", false), + peg$c92 = "in", + peg$c93 = peg$literalExpectation("in", false), + peg$c94 = "the", + peg$c95 = peg$literalExpectation("the", false), + peg$c96 = "book", + peg$c97 = peg$literalExpectation("book", false), + peg$c98 = /^[([]/, + peg$c99 = peg$classExpectation(["(", "["], false, false), + peg$c100 = /^[)\]]/, + peg$c101 = peg$classExpectation([")", "]"], false, false), + peg$c102 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = "\x1E", + peg$c104 = peg$literalExpectation("\x1E", false), + peg$c105 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = ",000", + peg$c107 = peg$literalExpectation(",000", false), + peg$c108 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[^\x1F\x1E([]/, + peg$c110 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c111 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = /^[\s\xa0*]/, + peg$c114 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c76 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c60) { + s3 = peg$c60; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c62) { + s4 = peg$c62; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c64) { + s4 = peg$c64; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c66(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c67; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c69) { + s4 = peg$c69; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c71(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c72; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c72; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c76.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c78) { + s2 = peg$c78; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c80) { + s2 = peg$c80; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c76.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c78) { + s2 = peg$c78; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c80) { + s2 = peg$c80; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c82(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c83.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c83.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c85) { + s2 = peg$c85; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c87(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s2 = peg$c88; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s2 = peg$c90; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s2 = peg$c92; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c94) { + s5 = peg$c94; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c96) { + s7 = peg$c96; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s9 = peg$c90; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c98.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c103; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c103; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c109.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c109.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c98.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/da/spec.ts b/src/da/spec.ts index ec124f0..67d3b59 100644 --- a/src/da/spec.ts +++ b/src/da/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/da"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/de/grammar.js b/src/de/grammar.js new file mode 100644 index 0000000..a447793 --- /dev/null +++ b/src/de/grammar.js @@ -0,0 +1,4190 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "kap", + peg$c61 = peg$literalExpectation("kap", false), + peg$c62 = "itel", + peg$c63 = peg$literalExpectation("itel", false), + peg$c64 = function() { return {"type": "c_explicit"} }, + peg$c65 = "v", + peg$c66 = peg$literalExpectation("v", false), + peg$c67 = "erse", + peg$c68 = peg$literalExpectation("erse", false), + peg$c69 = "ers", + peg$c70 = peg$literalExpectation("ers", false), + peg$c71 = "er", + peg$c72 = peg$literalExpectation("er", false), + peg$c73 = "s", + peg$c74 = peg$literalExpectation("s", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "und", + peg$c83 = peg$literalExpectation("und", false), + peg$c84 = "vgl", + peg$c85 = peg$literalExpectation("vgl", false), + peg$c86 = function() { return "" }, + peg$c87 = /^[\-\u2013\u2014]/, + peg$c88 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c89 = "bis", + peg$c90 = peg$literalExpectation("bis", false), + peg$c91 = "titel", + peg$c92 = peg$literalExpectation("titel", false), + peg$c93 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c94 = "from", + peg$c95 = peg$literalExpectation("from", false), + peg$c96 = "of", + peg$c97 = peg$literalExpectation("of", false), + peg$c98 = "in", + peg$c99 = peg$literalExpectation("in", false), + peg$c100 = "the", + peg$c101 = peg$literalExpectation("the", false), + peg$c102 = "book", + peg$c103 = peg$literalExpectation("book", false), + peg$c104 = /^[([]/, + peg$c105 = peg$classExpectation(["(", "["], false, false), + peg$c106 = /^[)\]]/, + peg$c107 = peg$classExpectation([")", "]"], false, false), + peg$c108 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = "\x1E", + peg$c110 = peg$literalExpectation("\x1E", false), + peg$c111 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = ",000", + peg$c113 = peg$literalExpectation(",000", false), + peg$c114 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[^\x1F\x1E([]/, + peg$c116 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c117 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = /^[\s\xa0*]/, + peg$c120 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c60) { + s3 = peg$c60; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c62) { + s4 = peg$c62; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c65; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c67) { + s4 = peg$c67; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c69) { + s5 = peg$c69; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c71) { + s5 = peg$c71; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c73; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c82) { + s2 = peg$c82; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c82) { + s2 = peg$c82; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c89) { + s4 = peg$c89; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c89) { + s4 = peg$c89; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c91) { + s2 = peg$c91; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c93(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c94) { + s2 = peg$c94; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c98) { + s2 = peg$c98; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c100) { + s5 = peg$c100; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s7 = peg$c102; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s9 = peg$c96; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c106.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c109; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c109; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c104.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/de/spec.ts b/src/de/spec.ts index 43ce67f..ff8a4b2 100644 --- a/src/de/spec.ts +++ b/src/de/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/de"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/el/grammar.js b/src/el/grammar.js new file mode 100644 index 0000000..86f2988 --- /dev/null +++ b/src/el/grammar.js @@ -0,0 +1,4449 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "\u03BA\u03B1\u03B9", + peg$c41 = peg$literalExpectation("\u03BA\u03B1\u03B9", true), + peg$c42 = "\u03BC\u03B5\u03C4", + peg$c43 = peg$literalExpectation("\u03BC\u03B5\u03C4", true), + peg$c44 = /^[\u03AC\u03B1]/i, + peg$c45 = peg$classExpectation(["\u03AC", "\u03B1"], false, true), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[\u03B1-\u03B5]/i, + peg$c62 = peg$classExpectation([["\u03B1", "\u03B5"]], false, true), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "\u03BA\u03B5\u03C6", + peg$c65 = peg$literalExpectation("\u03BA\u03B5\u03C6", true), + peg$c66 = "\u03BB\u03B1\u03B9\u03B1", + peg$c67 = peg$literalExpectation("\u03BB\u03B1\u03B9\u03B1", true), + peg$c68 = "\u03BB\u03B1\u03B9\u03BF\u03BD", + peg$c69 = peg$literalExpectation("\u03BB\u03B1\u03B9\u03BF\u03BD", true), + peg$c70 = "\u03BB\u03B1\u03B9\u03BF", + peg$c71 = peg$literalExpectation("\u03BB\u03B1\u03B9\u03BF", true), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "\u03C3\u03C4", + peg$c74 = peg$literalExpectation("\u03C3\u03C4", true), + peg$c75 = /^[\u03AF\u03B9]/i, + peg$c76 = peg$classExpectation(["\u03AF", "\u03B9"], false, true), + peg$c77 = "\u03C7\u03BF", + peg$c78 = peg$literalExpectation("\u03C7\u03BF", true), + peg$c79 = "\u03C2", + peg$c80 = peg$literalExpectation("\u03C2", true), + peg$c81 = "\u03B9", + peg$c82 = peg$literalExpectation("\u03B9", true), + peg$c83 = "\u03C3", + peg$c84 = peg$literalExpectation("\u03C3", true), + peg$c85 = function() { return {"type": "v_explicit"} }, + peg$c86 = ":", + peg$c87 = peg$literalExpectation(":", false), + peg$c88 = /^["']/, + peg$c89 = peg$classExpectation(["\"", "'"], false, false), + peg$c90 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c91 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c92 = function() { return "" }, + peg$c93 = /^[\-\u2013\u2014]/, + peg$c94 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c95 = "\u03BF", + peg$c96 = peg$literalExpectation("\u03BF", true), + peg$c97 = "\u03C4", + peg$c98 = peg$literalExpectation("\u03C4", true), + peg$c99 = "\u03C4\u03BB\u03BF\u03C2", + peg$c100 = peg$literalExpectation("\u03C4\u03BB\u03BF\u03C2", true), + peg$c101 = "\u03C4\u03BB\u03BF\u03C3", + peg$c102 = peg$literalExpectation("\u03C4\u03BB\u03BF\u03C3", true), + peg$c103 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = "from", + peg$c105 = peg$literalExpectation("from", false), + peg$c106 = "of", + peg$c107 = peg$literalExpectation("of", false), + peg$c108 = "in", + peg$c109 = peg$literalExpectation("in", false), + peg$c110 = "the", + peg$c111 = peg$literalExpectation("the", false), + peg$c112 = "book", + peg$c113 = peg$literalExpectation("book", false), + peg$c114 = /^[([]/, + peg$c115 = peg$classExpectation(["(", "["], false, false), + peg$c116 = /^[)\]]/, + peg$c117 = peg$classExpectation([")", "]"], false, false), + peg$c118 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = "\x1E", + peg$c120 = peg$literalExpectation("\x1E", false), + peg$c121 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c122 = ",000", + peg$c123 = peg$literalExpectation(",000", false), + peg$c124 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c125 = /^[^\x1F\x1E([]/, + peg$c126 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c127 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c128 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c129 = /^[\s\xa0*]/, + peg$c130 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c90 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c40) { + s3 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c42) { + s5 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + if (peg$c44.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parseabbrev(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s9 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s9 === peg$FAILED) { + s8 = void 0; + } else { + peg$currPos = s8; + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c40) { + s6 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c42) { + s8 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + if (peg$c44.test(input.charAt(peg$currPos))) { + s9 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c64) { + s3 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (peg$c44.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c66) { + s6 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (peg$c44.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c68) { + s6 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (peg$c44.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c70) { + s6 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c73) { + s3 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c77) { + s5 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c79) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s6 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c81) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s6 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c83) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + } + } + if (s6 !== peg$FAILED) { + s3 = [s3, s4, s5, s6]; + 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; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c85(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c86; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c86; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c88.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c40) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c40) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c92(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c99) { + s7 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + 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) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c101) { + s7 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + 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) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c99) { + s5 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c101) { + s5 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + peg$savedPos = s0; + s1 = peg$c103(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c104) { + s2 = peg$c104; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s2 = peg$c106; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c108) { + s2 = peg$c108; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s5 = peg$c110; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s7 = peg$c112; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s9 = peg$c106; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c114.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c116.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c117); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c119; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c119; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c121(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c124(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c125.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c126); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c125.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c126); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c127(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c114.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c128(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/el/spec.ts b/src/el/spec.ts index 3f6953d..bff0237 100644 --- a/src/el/spec.ts +++ b/src/el/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/el"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/en/grammar.js b/src/en/grammar.js new file mode 100644 index 0000000..358519a --- /dev/null +++ b/src/en/grammar.js @@ -0,0 +1,4830 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z0-9]/, + peg$c43 = peg$classExpectation([["a", "z"], ["0", "9"]], false, false), + peg$c44 = "f", + peg$c45 = peg$literalExpectation("f", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "ch", + peg$c65 = peg$literalExpectation("ch", false), + peg$c66 = "apters", + peg$c67 = peg$literalExpectation("apters", false), + peg$c68 = "apter", + peg$c69 = peg$literalExpectation("apter", false), + peg$c70 = "apts", + peg$c71 = peg$literalExpectation("apts", false), + peg$c72 = "pts", + peg$c73 = peg$literalExpectation("pts", false), + peg$c74 = "apt", + peg$c75 = peg$literalExpectation("apt", false), + peg$c76 = "aps", + peg$c77 = peg$literalExpectation("aps", false), + peg$c78 = "ap", + peg$c79 = peg$literalExpectation("ap", false), + peg$c80 = "p", + peg$c81 = peg$literalExpectation("p", false), + peg$c82 = "s", + peg$c83 = peg$literalExpectation("s", false), + peg$c84 = "a", + peg$c85 = peg$literalExpectation("a", false), + peg$c86 = function() { return {"type": "c_explicit"} }, + peg$c87 = "v", + peg$c88 = peg$literalExpectation("v", false), + peg$c89 = "erses", + peg$c90 = peg$literalExpectation("erses", false), + peg$c91 = "erse", + peg$c92 = peg$literalExpectation("erse", false), + peg$c93 = "er", + peg$c94 = peg$literalExpectation("er", false), + peg$c95 = "ss", + peg$c96 = peg$literalExpectation("ss", false), + peg$c97 = function() { return {"type": "v_explicit"} }, + peg$c98 = ":", + peg$c99 = peg$literalExpectation(":", false), + peg$c100 = /^["']/, + peg$c101 = peg$classExpectation(["\"", "'"], false, false), + peg$c102 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c103 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c104 = "and", + peg$c105 = peg$literalExpectation("and", false), + peg$c106 = "compare", + peg$c107 = peg$literalExpectation("compare", false), + peg$c108 = "cf", + peg$c109 = peg$literalExpectation("cf", false), + peg$c110 = "see", + peg$c111 = peg$literalExpectation("see", false), + peg$c112 = "also", + peg$c113 = peg$literalExpectation("also", false), + peg$c114 = function() { return "" }, + peg$c115 = /^[\-\u2013\u2014]/, + peg$c116 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c117 = "through", + peg$c118 = peg$literalExpectation("through", false), + peg$c119 = "thru", + peg$c120 = peg$literalExpectation("thru", false), + peg$c121 = "to", + peg$c122 = peg$literalExpectation("to", false), + peg$c123 = "title", + peg$c124 = peg$literalExpectation("title", false), + peg$c125 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = "from", + peg$c127 = peg$literalExpectation("from", false), + peg$c128 = "of", + peg$c129 = peg$literalExpectation("of", false), + peg$c130 = "in", + peg$c131 = peg$literalExpectation("in", false), + peg$c132 = "the", + peg$c133 = peg$literalExpectation("the", false), + peg$c134 = "book", + peg$c135 = peg$literalExpectation("book", false), + peg$c136 = /^[([]/, + peg$c137 = peg$classExpectation(["(", "["], false, false), + peg$c138 = /^[)\]]/, + peg$c139 = peg$classExpectation([")", "]"], false, false), + peg$c140 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c141 = "\x1E", + peg$c142 = peg$literalExpectation("\x1E", false), + peg$c143 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c144 = ",000", + peg$c145 = peg$literalExpectation(",000", false), + peg$c146 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c147 = /^[^\x1F\x1E([]/, + peg$c148 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c149 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c150 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c151 = /^[\s\xa0*]/, + peg$c152 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c102 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s4 = peg$c44; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + 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 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s6 = peg$c44; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c64) { + s3 = peg$c64; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c66) { + s4 = peg$c66; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s4 = peg$c68; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c70) { + s5 = peg$c70; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c72) { + s5 = peg$c72; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c74) { + s5 = peg$c74; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c76) { + s5 = peg$c76; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c78) { + s5 = peg$c78; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 112) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s5 = peg$c84; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c87; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c89) { + s4 = peg$c89; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s4 = peg$c91; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c93) { + s5 = peg$c93; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c95) { + s5 = peg$c95; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c87; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c123) { + s2 = peg$c123; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c126) { + s2 = peg$c126; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s2 = peg$c128; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c130) { + s2 = peg$c130; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c131); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c132) { + s5 = peg$c132; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c133); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c134) { + s7 = peg$c134; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c135); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s9 = peg$c128; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c136.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c138.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c139); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c141; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c141; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c143(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c146(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c149(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c136.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c150(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/en/spec.ts b/src/en/spec.ts index e013359..d841b29 100644 --- a/src/en/spec.ts +++ b/src/en/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/en"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/es/grammar.js b/src/es/grammar.js new file mode 100644 index 0000000..7542e9e --- /dev/null +++ b/src/es/grammar.js @@ -0,0 +1,4646 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "y", + peg$c41 = peg$literalExpectation("y", false), + peg$c42 = "siguientes", + peg$c43 = peg$literalExpectation("siguientes", false), + peg$c44 = "sig", + peg$c45 = peg$literalExpectation("sig", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "cap", + peg$c65 = peg$literalExpectation("cap", false), + peg$c66 = /^[\xEDi]/i, + peg$c67 = peg$classExpectation(["\xED", "i"], false, true), + peg$c68 = "tulos", + peg$c69 = peg$literalExpectation("tulos", false), + peg$c70 = "tulo", + peg$c71 = peg$literalExpectation("tulo", false), + peg$c72 = "s", + peg$c73 = peg$literalExpectation("s", false), + peg$c74 = function() { return {"type": "c_explicit"} }, + peg$c75 = "v", + peg$c76 = peg$literalExpectation("v", false), + peg$c77 = "ers", + peg$c78 = peg$literalExpectation("ers", false), + peg$c79 = "culos", + peg$c80 = peg$literalExpectation("culos", false), + peg$c81 = "culo", + peg$c82 = peg$literalExpectation("culo", false), + peg$c83 = "er", + peg$c84 = peg$literalExpectation("er", false), + peg$c85 = "ss", + peg$c86 = peg$literalExpectation("ss", false), + peg$c87 = function() { return {"type": "v_explicit"} }, + peg$c88 = ":", + peg$c89 = peg$literalExpectation(":", false), + peg$c90 = /^["']/, + peg$c91 = peg$classExpectation(["\"", "'"], false, false), + peg$c92 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c93 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c94 = function() { return "" }, + peg$c95 = /^[\-\u2013\u2014]/, + peg$c96 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c97 = "\xE1", + peg$c98 = peg$literalExpectation("\xE1", true), + peg$c99 = "subt", + peg$c100 = peg$literalExpectation("subt", false), + peg$c101 = "t", + peg$c102 = peg$literalExpectation("t", false), + peg$c103 = "t\xEDt", + peg$c104 = peg$literalExpectation("t\xEDt", true), + peg$c105 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = "from", + peg$c107 = peg$literalExpectation("from", false), + peg$c108 = "of", + peg$c109 = peg$literalExpectation("of", false), + peg$c110 = "in", + peg$c111 = peg$literalExpectation("in", false), + peg$c112 = "the", + peg$c113 = peg$literalExpectation("the", false), + peg$c114 = "book", + peg$c115 = peg$literalExpectation("book", false), + peg$c116 = /^[([]/, + peg$c117 = peg$classExpectation(["(", "["], false, false), + peg$c118 = /^[)\]]/, + peg$c119 = peg$classExpectation([")", "]"], false, false), + peg$c120 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c121 = "\x1E", + peg$c122 = peg$literalExpectation("\x1E", false), + peg$c123 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c124 = ",000", + peg$c125 = peg$literalExpectation(",000", false), + peg$c126 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c127 = /^[^\x1F\x1E([]/, + peg$c128 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c129 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c130 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c131 = /^[\s\xa0*]/, + peg$c132 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c92 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s4 = peg$c40; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsespace(); + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 10) === peg$c42) { + s6 = peg$c42; + peg$currPos += 10; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s4 = peg$c40; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsespace(); + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s6 = peg$c44; + peg$currPos += 3; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s6 = peg$c40; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 10) === peg$c42) { + s8 = peg$c42; + peg$currPos += 10; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 === peg$FAILED) { + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s6 = peg$c40; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s8 = peg$c44; + peg$currPos += 3; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c64) { + s3 = peg$c64; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (peg$c66.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s6 = peg$c68; + peg$currPos += 5; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (peg$c66.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c70) { + s6 = peg$c70; + peg$currPos += 4; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c72; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c75; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c77) { + s5 = peg$c77; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + if (peg$c66.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s7 = peg$c79; + peg$currPos += 5; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + 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 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c77) { + s5 = peg$c77; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + if (peg$c66.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c81) { + s7 = peg$c81; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + 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 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c77) { + s5 = peg$c77; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c83) { + s5 = peg$c83; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c85) { + s5 = peg$c85; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c72; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c75; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c87(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c88; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c88; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s7 = peg$c44; + peg$currPos += 3; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 121) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s7 = peg$c44; + peg$currPos += 3; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c97) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c99) { + s3 = peg$c99; + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + if (peg$c66.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c70) { + s5 = peg$c70; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 116) { + s3 = peg$c101; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s3 !== peg$FAILED) { + if (peg$c66.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c70) { + s5 = peg$c70; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c103) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c106) { + s2 = peg$c106; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c108) { + s2 = peg$c108; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c110) { + s2 = peg$c110; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c112) { + s5 = peg$c112; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c114) { + s7 = peg$c114; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c108) { + s9 = peg$c108; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c116.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c117); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c118.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c119); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c121; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c121; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c126(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c127.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c128); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c127.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c128); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c129(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c116.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c117); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c130(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/es/spec.ts b/src/es/spec.ts index 13bb033..d86eda8 100644 --- a/src/es/spec.ts +++ b/src/es/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/es"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/fi/grammar.js b/src/fi/grammar.js new file mode 100644 index 0000000..7972d8c --- /dev/null +++ b/src/fi/grammar.js @@ -0,0 +1,4157 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ss", + peg$c41 = peg$literalExpectation("ss", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "lu", + peg$c61 = peg$literalExpectation("lu", false), + peg$c62 = "ku", + peg$c63 = peg$literalExpectation("ku", false), + peg$c64 = "vut", + peg$c65 = peg$literalExpectation("vut", false), + peg$c66 = "vun", + peg$c67 = peg$literalExpectation("vun", false), + peg$c68 = function() { return {"type": "c_explicit"} }, + peg$c69 = "jake", + peg$c70 = peg$literalExpectation("jake", false), + peg$c71 = "et", + peg$c72 = peg$literalExpectation("et", false), + peg$c73 = "issa", + peg$c74 = peg$literalExpectation("issa", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "ja", + peg$c83 = peg$literalExpectation("ja", false), + peg$c84 = "vrt", + peg$c85 = peg$literalExpectation("vrt", false), + peg$c86 = function() { return "" }, + peg$c87 = /^[\-\u2013\u2014]/, + peg$c88 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c89 = "\u2013", + peg$c90 = peg$literalExpectation("\u2013", true), + peg$c91 = "johdannolla", + peg$c92 = peg$literalExpectation("johdannolla", false), + peg$c93 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c94 = "from", + peg$c95 = peg$literalExpectation("from", false), + peg$c96 = "of", + peg$c97 = peg$literalExpectation("of", false), + peg$c98 = "in", + peg$c99 = peg$literalExpectation("in", false), + peg$c100 = "the", + peg$c101 = peg$literalExpectation("the", false), + peg$c102 = "book", + peg$c103 = peg$literalExpectation("book", false), + peg$c104 = /^[([]/, + peg$c105 = peg$classExpectation(["(", "["], false, false), + peg$c106 = /^[)\]]/, + peg$c107 = peg$classExpectation([")", "]"], false, false), + peg$c108 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = "\x1E", + peg$c110 = peg$literalExpectation("\x1E", false), + peg$c111 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = ",000", + peg$c113 = peg$literalExpectation(",000", false), + peg$c114 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[^\x1F\x1E([]/, + peg$c116 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c117 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = /^[\s\xa0*]/, + peg$c120 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c60) { + s3 = peg$c60; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c62) { + s4 = peg$c62; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c64) { + s4 = peg$c64; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c66) { + s4 = peg$c66; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c69) { + s3 = peg$c69; + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c71) { + s4 = peg$c71; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c73) { + s4 = peg$c73; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c82) { + s3 = peg$c82; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c84) { + s2 = peg$c84; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c82) { + s3 = peg$c82; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c84) { + s2 = peg$c84; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c89) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c89) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 11) === peg$c91) { + s2 = peg$c91; + peg$currPos += 11; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c93(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c94) { + s2 = peg$c94; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c98) { + s2 = peg$c98; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c100) { + s5 = peg$c100; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s7 = peg$c102; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s9 = peg$c96; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c106.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c109; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c109; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c104.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/fi/spec.ts b/src/fi/spec.ts index 3c9f73a..8248d49 100644 --- a/src/fi/spec.ts +++ b/src/fi/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/fi"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/fr/grammar.js b/src/fr/grammar.js new file mode 100644 index 0000000..41b8ea9 --- /dev/null +++ b/src/fr/grammar.js @@ -0,0 +1,4368 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "et", + peg$c41 = peg$literalExpectation("et", false), + peg$c42 = "suivant", + peg$c43 = peg$literalExpectation("suivant", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a-e]/, + peg$c60 = peg$classExpectation([["a", "e"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "ch", + peg$c63 = peg$literalExpectation("ch", false), + peg$c64 = "apitres", + peg$c65 = peg$literalExpectation("apitres", false), + peg$c66 = "apitre", + peg$c67 = peg$literalExpectation("apitre", false), + peg$c68 = "ap", + peg$c69 = peg$literalExpectation("ap", false), + peg$c70 = "s", + peg$c71 = peg$literalExpectation("s", false), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "v", + peg$c74 = peg$literalExpectation("v", false), + peg$c75 = "ersets", + peg$c76 = peg$literalExpectation("ersets", false), + peg$c77 = "erset", + peg$c78 = peg$literalExpectation("erset", false), + peg$c79 = "ers", + peg$c80 = peg$literalExpectation("ers", false), + peg$c81 = "er", + peg$c82 = peg$literalExpectation("er", false), + peg$c83 = function() { return {"type": "v_explicit"} }, + peg$c84 = ":", + peg$c85 = peg$literalExpectation(":", false), + peg$c86 = /^["']/, + peg$c87 = peg$classExpectation(["\"", "'"], false, false), + peg$c88 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c89 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c90 = "comparer", + peg$c91 = peg$literalExpectation("comparer", false), + peg$c92 = function() { return "" }, + peg$c93 = /^[\-\u2013\u2014]/, + peg$c94 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c95 = "\xE1", + peg$c96 = peg$literalExpectation("\xE1", true), + peg$c97 = "titre", + peg$c98 = peg$literalExpectation("titre", false), + peg$c99 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "from", + peg$c101 = peg$literalExpectation("from", false), + peg$c102 = "of", + peg$c103 = peg$literalExpectation("of", false), + peg$c104 = "in", + peg$c105 = peg$literalExpectation("in", false), + peg$c106 = "the", + peg$c107 = peg$literalExpectation("the", false), + peg$c108 = "book", + peg$c109 = peg$literalExpectation("book", false), + peg$c110 = /^[([]/, + peg$c111 = peg$classExpectation(["(", "["], false, false), + peg$c112 = /^[)\]]/, + peg$c113 = peg$classExpectation([")", "]"], false, false), + peg$c114 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = "\x1E", + peg$c116 = peg$literalExpectation("\x1E", false), + peg$c117 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = ",000", + peg$c119 = peg$literalExpectation(",000", false), + peg$c120 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c121 = /^[^\x1F\x1E([]/, + peg$c122 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c123 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c124 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c125 = /^[\s\xa0*]/, + peg$c126 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c88 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c42) { + s5 = peg$c42; + peg$currPos += 7; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c42) { + s8 = peg$c42; + peg$currPos += 7; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c62) { + s3 = peg$c62; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c64) { + s4 = peg$c64; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c66) { + s4 = peg$c66; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c68) { + s5 = peg$c68; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c70; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c75) { + s4 = peg$c75; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s4 = peg$c77; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c79) { + s5 = peg$c79; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c81) { + s5 = peg$c81; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c73; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c84; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c84; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c86.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c88.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c42) { + s7 = peg$c42; + peg$currPos += 7; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c90) { + s2 = peg$c90; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c88.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c42) { + s7 = peg$c42; + peg$currPos += 7; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c90) { + s2 = peg$c90; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c92(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c97) { + s2 = peg$c97; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s2 = peg$c100; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s2 = peg$c102; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c106) { + s5 = peg$c106; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c108) { + s7 = peg$c108; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s9 = peg$c102; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c110.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c115; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c115; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c110.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c124(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/fr/spec.ts b/src/fr/spec.ts index a32c875..6a31249 100644 --- a/src/fr/spec.ts +++ b/src/fr/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/fr"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/full/grammar.js b/src/full/grammar.js new file mode 100644 index 0000000..358519a --- /dev/null +++ b/src/full/grammar.js @@ -0,0 +1,4830 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z0-9]/, + peg$c43 = peg$classExpectation([["a", "z"], ["0", "9"]], false, false), + peg$c44 = "f", + peg$c45 = peg$literalExpectation("f", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "ch", + peg$c65 = peg$literalExpectation("ch", false), + peg$c66 = "apters", + peg$c67 = peg$literalExpectation("apters", false), + peg$c68 = "apter", + peg$c69 = peg$literalExpectation("apter", false), + peg$c70 = "apts", + peg$c71 = peg$literalExpectation("apts", false), + peg$c72 = "pts", + peg$c73 = peg$literalExpectation("pts", false), + peg$c74 = "apt", + peg$c75 = peg$literalExpectation("apt", false), + peg$c76 = "aps", + peg$c77 = peg$literalExpectation("aps", false), + peg$c78 = "ap", + peg$c79 = peg$literalExpectation("ap", false), + peg$c80 = "p", + peg$c81 = peg$literalExpectation("p", false), + peg$c82 = "s", + peg$c83 = peg$literalExpectation("s", false), + peg$c84 = "a", + peg$c85 = peg$literalExpectation("a", false), + peg$c86 = function() { return {"type": "c_explicit"} }, + peg$c87 = "v", + peg$c88 = peg$literalExpectation("v", false), + peg$c89 = "erses", + peg$c90 = peg$literalExpectation("erses", false), + peg$c91 = "erse", + peg$c92 = peg$literalExpectation("erse", false), + peg$c93 = "er", + peg$c94 = peg$literalExpectation("er", false), + peg$c95 = "ss", + peg$c96 = peg$literalExpectation("ss", false), + peg$c97 = function() { return {"type": "v_explicit"} }, + peg$c98 = ":", + peg$c99 = peg$literalExpectation(":", false), + peg$c100 = /^["']/, + peg$c101 = peg$classExpectation(["\"", "'"], false, false), + peg$c102 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c103 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c104 = "and", + peg$c105 = peg$literalExpectation("and", false), + peg$c106 = "compare", + peg$c107 = peg$literalExpectation("compare", false), + peg$c108 = "cf", + peg$c109 = peg$literalExpectation("cf", false), + peg$c110 = "see", + peg$c111 = peg$literalExpectation("see", false), + peg$c112 = "also", + peg$c113 = peg$literalExpectation("also", false), + peg$c114 = function() { return "" }, + peg$c115 = /^[\-\u2013\u2014]/, + peg$c116 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c117 = "through", + peg$c118 = peg$literalExpectation("through", false), + peg$c119 = "thru", + peg$c120 = peg$literalExpectation("thru", false), + peg$c121 = "to", + peg$c122 = peg$literalExpectation("to", false), + peg$c123 = "title", + peg$c124 = peg$literalExpectation("title", false), + peg$c125 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = "from", + peg$c127 = peg$literalExpectation("from", false), + peg$c128 = "of", + peg$c129 = peg$literalExpectation("of", false), + peg$c130 = "in", + peg$c131 = peg$literalExpectation("in", false), + peg$c132 = "the", + peg$c133 = peg$literalExpectation("the", false), + peg$c134 = "book", + peg$c135 = peg$literalExpectation("book", false), + peg$c136 = /^[([]/, + peg$c137 = peg$classExpectation(["(", "["], false, false), + peg$c138 = /^[)\]]/, + peg$c139 = peg$classExpectation([")", "]"], false, false), + peg$c140 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c141 = "\x1E", + peg$c142 = peg$literalExpectation("\x1E", false), + peg$c143 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c144 = ",000", + peg$c145 = peg$literalExpectation(",000", false), + peg$c146 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c147 = /^[^\x1F\x1E([]/, + peg$c148 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c149 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c150 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c151 = /^[\s\xa0*]/, + peg$c152 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c102 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s4 = peg$c44; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + 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; + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + 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 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s6 = peg$c44; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c64) { + s3 = peg$c64; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c66) { + s4 = peg$c66; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s4 = peg$c68; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c70) { + s5 = peg$c70; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c72) { + s5 = peg$c72; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c74) { + s5 = peg$c74; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c76) { + s5 = peg$c76; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c78) { + s5 = peg$c78; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 112) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s5 = peg$c84; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c87; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c89) { + s4 = peg$c89; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s4 = peg$c91; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c93) { + s5 = peg$c93; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c95) { + s5 = peg$c95; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c82; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c87; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c104) { + s2 = peg$c104; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c106) { + s2 = peg$c106; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c108) { + s3 = peg$c108; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s3 = peg$c110; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s5 = peg$c112; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s2 = peg$c112; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c110) { + s2 = peg$c110; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c117) { + s4 = peg$c117; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c119) { + s4 = peg$c119; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s4 = peg$c121; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c123) { + s2 = peg$c123; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c126) { + s2 = peg$c126; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s2 = peg$c128; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c130) { + s2 = peg$c130; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c131); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c132) { + s5 = peg$c132; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c133); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c134) { + s7 = peg$c134; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c135); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c128) { + s9 = peg$c128; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c136.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c138.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c139); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c140(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c141; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c141; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c142); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c143(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c146(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c147.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c148); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c149(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c136.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c150(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/full/spec.ts b/src/full/spec.ts index d89e2ec..f965a29 100644 --- a/src/full/spec.ts +++ b/src/full/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/full"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/he/grammar.js b/src/he/grammar.js new file mode 100644 index 0000000..33f9e1a --- /dev/null +++ b/src/he/grammar.js @@ -0,0 +1,4026 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u05E4\u05E8\u05E7", + peg$c61 = peg$literalExpectation("\u05E4\u05E8\u05E7", true), + peg$c62 = "\u05D9\u05DD", + peg$c63 = peg$literalExpectation("\u05D9\u05DD", true), + peg$c64 = "", + peg$c65 = function() { return {"type": "c_explicit"} }, + peg$c66 = "verse", + peg$c67 = peg$literalExpectation("verse", false), + peg$c68 = function() { return {"type": "v_explicit"} }, + peg$c69 = ":", + peg$c70 = peg$literalExpectation(":", false), + peg$c71 = /^["']/, + peg$c72 = peg$classExpectation(["\"", "'"], false, false), + peg$c73 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c74 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c75 = "and", + peg$c76 = peg$literalExpectation("and", false), + peg$c77 = function() { return "" }, + peg$c78 = /^[\-\u2013\u2014]/, + peg$c79 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c80 = "title", + peg$c81 = peg$literalExpectation("title", false), + peg$c82 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c83 = "from", + peg$c84 = peg$literalExpectation("from", false), + peg$c85 = "of", + peg$c86 = peg$literalExpectation("of", false), + peg$c87 = "in", + peg$c88 = peg$literalExpectation("in", false), + peg$c89 = "the", + peg$c90 = peg$literalExpectation("the", false), + peg$c91 = "book", + peg$c92 = peg$literalExpectation("book", false), + peg$c93 = /^[([]/, + peg$c94 = peg$classExpectation(["(", "["], false, false), + peg$c95 = /^[)\]]/, + peg$c96 = peg$classExpectation([")", "]"], false, false), + peg$c97 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = "\x1E", + peg$c99 = peg$literalExpectation("\x1E", false), + peg$c100 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = ",000", + peg$c102 = peg$literalExpectation(",000", false), + peg$c103 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = /^[^\x1F\x1E([]/, + peg$c105 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c106 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = /^[\s\xa0*]/, + peg$c109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c73 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c60) { + s3 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c62) { + s4 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + s4 = peg$c64; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c66) { + s2 = peg$c66; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c71.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c73.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c75) { + s2 = peg$c75; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c73.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c75) { + s2 = peg$c75; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c78.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c78.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c80) { + s2 = peg$c80; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c82(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c83) { + s2 = peg$c83; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c85) { + s2 = peg$c85; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s2 = peg$c87; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c89) { + s5 = peg$c89; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s7 = peg$c91; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c85) { + s9 = peg$c85; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c93.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c95.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c98; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c98; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c104.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c104.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/he/spec.ts b/src/he/spec.ts index ddbe6b8..dacf47c 100644 --- a/src/he/spec.ts +++ b/src/he/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/he"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/hi/grammar.js b/src/hi/grammar.js new file mode 100644 index 0000000..f5631af --- /dev/null +++ b/src/hi/grammar.js @@ -0,0 +1,4002 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "to", + peg$c78 = peg$literalExpectation("to", false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/hi/spec.ts b/src/hi/spec.ts index b212c41..eea0812 100644 --- a/src/hi/spec.ts +++ b/src/hi/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/hi"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/hr/grammar.js b/src/hr/grammar.js new file mode 100644 index 0000000..6a6206f --- /dev/null +++ b/src/hr/grammar.js @@ -0,0 +1,4022 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "poglavlja", + peg$c61 = peg$literalExpectation("poglavlja", false), + peg$c62 = "poglavlje", + peg$c63 = peg$literalExpectation("poglavlje", false), + peg$c64 = "glava", + peg$c65 = peg$literalExpectation("glava", false), + peg$c66 = function() { return {"type": "c_explicit"} }, + peg$c67 = "verse", + peg$c68 = peg$literalExpectation("verse", false), + peg$c69 = function() { return {"type": "v_explicit"} }, + peg$c70 = ":", + peg$c71 = peg$literalExpectation(":", false), + peg$c72 = /^["']/, + peg$c73 = peg$classExpectation(["\"", "'"], false, false), + peg$c74 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c75 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c76 = "i", + peg$c77 = peg$literalExpectation("i", false), + peg$c78 = function() { return "" }, + peg$c79 = /^[\-\u2013\u2014]/, + peg$c80 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c81 = "title", + peg$c82 = peg$literalExpectation("title", false), + peg$c83 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c84 = "from", + peg$c85 = peg$literalExpectation("from", false), + peg$c86 = "of", + peg$c87 = peg$literalExpectation("of", false), + peg$c88 = "in", + peg$c89 = peg$literalExpectation("in", false), + peg$c90 = "the", + peg$c91 = peg$literalExpectation("the", false), + peg$c92 = "book", + peg$c93 = peg$literalExpectation("book", false), + peg$c94 = /^[([]/, + peg$c95 = peg$classExpectation(["(", "["], false, false), + peg$c96 = /^[)\]]/, + peg$c97 = peg$classExpectation([")", "]"], false, false), + peg$c98 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c99 = "\x1E", + peg$c100 = peg$literalExpectation("\x1E", false), + peg$c101 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = ",000", + peg$c103 = peg$literalExpectation(",000", false), + peg$c104 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[^\x1F\x1E([]/, + peg$c106 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c107 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[\s\xa0*]/, + peg$c110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c74 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c60) { + s2 = peg$c60; + peg$currPos += 9; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c62) { + s2 = peg$c62; + peg$currPos += 9; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c64) { + s2 = peg$c64; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c66(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c67) { + s2 = peg$c67; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s2 = peg$c76; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s2 = peg$c76; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c78(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c79.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c79.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c81) { + s2 = peg$c81; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c84) { + s2 = peg$c84; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c90) { + s5 = peg$c90; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s7 = peg$c92; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s9 = peg$c86; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c96.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c99; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c94.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/hr/spec.ts b/src/hr/spec.ts index 7ff0b20..26468da 100644 --- a/src/hr/spec.ts +++ b/src/hr/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/hr"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ht/grammar.js b/src/ht/grammar.js new file mode 100644 index 0000000..830b9b8 --- /dev/null +++ b/src/ht/grammar.js @@ -0,0 +1,4048 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "v", + peg$c64 = peg$literalExpectation("v", false), + peg$c65 = /^[\xE8e]/i, + peg$c66 = peg$classExpectation(["\xE8", "e"], false, true), + peg$c67 = "s", + peg$c68 = peg$literalExpectation("s", false), + peg$c69 = function() { return {"type": "v_explicit"} }, + peg$c70 = ":", + peg$c71 = peg$literalExpectation(":", false), + peg$c72 = /^["']/, + peg$c73 = peg$classExpectation(["\"", "'"], false, false), + peg$c74 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c75 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c76 = "and", + peg$c77 = peg$literalExpectation("and", false), + peg$c78 = function() { return "" }, + peg$c79 = /^[\-\u2013\u2014]/, + peg$c80 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c81 = "title", + peg$c82 = peg$literalExpectation("title", false), + peg$c83 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c84 = "from", + peg$c85 = peg$literalExpectation("from", false), + peg$c86 = "of", + peg$c87 = peg$literalExpectation("of", false), + peg$c88 = "in", + peg$c89 = peg$literalExpectation("in", false), + peg$c90 = "the", + peg$c91 = peg$literalExpectation("the", false), + peg$c92 = "book", + peg$c93 = peg$literalExpectation("book", false), + peg$c94 = /^[([]/, + peg$c95 = peg$classExpectation(["(", "["], false, false), + peg$c96 = /^[)\]]/, + peg$c97 = peg$classExpectation([")", "]"], false, false), + peg$c98 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c99 = "\x1E", + peg$c100 = peg$literalExpectation("\x1E", false), + peg$c101 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = ",000", + peg$c103 = peg$literalExpectation(",000", false), + peg$c104 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[^\x1F\x1E([]/, + peg$c106 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c107 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[\s\xa0*]/, + peg$c110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c74 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c63; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s3 !== peg$FAILED) { + if (peg$c65.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c67; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s5 !== peg$FAILED) { + if (peg$c65.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s6 !== peg$FAILED) { + s3 = [s3, s4, s5, s6]; + 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; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c76) { + s2 = peg$c76; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c76) { + s2 = peg$c76; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c78(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c79.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c79.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c81) { + s2 = peg$c81; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c84) { + s2 = peg$c84; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c90) { + s5 = peg$c90; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s7 = peg$c92; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s9 = peg$c86; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c96.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c99; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c94.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ht/spec.ts b/src/ht/spec.ts index 50d5002..820ae2f 100644 --- a/src/ht/spec.ts +++ b/src/ht/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ht"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/hu/grammar.js b/src/hu/grammar.js new file mode 100644 index 0000000..6f61cb8 --- /dev/null +++ b/src/hu/grammar.js @@ -0,0 +1,4312 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "kk", + peg$c41 = peg$literalExpectation("kk", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "fej", + peg$c61 = peg$literalExpectation("fej", false), + peg$c62 = "ezet", + peg$c63 = peg$literalExpectation("ezet", false), + peg$c64 = /^[\xE9e]/i, + peg$c65 = peg$classExpectation(["\xE9", "e"], false, true), + peg$c66 = "ben", + peg$c67 = peg$literalExpectation("ben", false), + peg$c68 = function() { return {"type": "c_explicit"} }, + peg$c69 = "vers", + peg$c70 = peg$literalExpectation("vers", false), + peg$c71 = "ekre", + peg$c72 = peg$literalExpectation("ekre", false), + peg$c73 = "ek", + peg$c74 = peg$literalExpectation("ek", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "s", + peg$c83 = peg$literalExpectation("s", false), + peg$c84 = "v", + peg$c85 = peg$literalExpectation("v", false), + peg$c86 = /^[\xF6o]/i, + peg$c87 = peg$classExpectation(["\xF6", "o"], false, true), + peg$c88 = "vagy", + peg$c89 = peg$literalExpectation("vagy", false), + peg$c90 = function() { return "" }, + peg$c91 = /^[\-\u2013\u2014]/, + peg$c92 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c93 = "k", + peg$c94 = peg$literalExpectation("k", false), + peg$c95 = "c", + peg$c96 = peg$literalExpectation("c", false), + peg$c97 = /^[\xEDi]/i, + peg$c98 = peg$classExpectation(["\xED", "i"], false, true), + peg$c99 = "m", + peg$c100 = peg$literalExpectation("m", false), + peg$c101 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = "from", + peg$c103 = peg$literalExpectation("from", false), + peg$c104 = "of", + peg$c105 = peg$literalExpectation("of", false), + peg$c106 = "in", + peg$c107 = peg$literalExpectation("in", false), + peg$c108 = "the", + peg$c109 = peg$literalExpectation("the", false), + peg$c110 = "book", + peg$c111 = peg$literalExpectation("book", false), + peg$c112 = /^[([]/, + peg$c113 = peg$classExpectation(["(", "["], false, false), + peg$c114 = /^[)\]]/, + peg$c115 = peg$classExpectation([")", "]"], false, false), + peg$c116 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = "\x1E", + peg$c118 = peg$literalExpectation("\x1E", false), + peg$c119 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c120 = ",000", + peg$c121 = peg$literalExpectation(",000", false), + peg$c122 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c123 = /^[^\x1F\x1E([]/, + peg$c124 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c125 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c127 = /^[\s\xa0*]/, + peg$c128 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c60) { + s3 = peg$c60; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c62) { + s5 = peg$c62; + peg$currPos += 4; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s5 !== peg$FAILED) { + if (peg$c64.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c66) { + s7 = peg$c66; + peg$currPos += 3; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + 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) { + if (input.substr(peg$currPos, 4) === peg$c62) { + s4 = peg$c62; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c69) { + s3 = peg$c69; + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c71) { + s4 = peg$c71; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c73) { + s4 = peg$c73; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (peg$c64.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 115) { + s4 = peg$c82; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c84; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + if (peg$c86.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s2 = peg$c88; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (peg$c64.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 115) { + s4 = peg$c82; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c84; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + if (peg$c86.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s2 = peg$c88; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c90(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c91.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 107) { + s4 = peg$c93; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + if (peg$c86.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 118) { + s6 = peg$c84; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c91.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 107) { + s4 = peg$c93; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + if (peg$c86.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 118) { + s6 = peg$c84; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + 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; + } + } + } + } 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$parsetitle() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 99) { + s2 = peg$c95; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 109) { + s4 = peg$c99; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + 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; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s2 = peg$c102; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s2 = peg$c106; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c108) { + s5 = peg$c108; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c110) { + s7 = peg$c110; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s9 = peg$c104; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c114.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c117; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c117; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c119(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c112.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c126(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/hu/spec.ts b/src/hu/spec.ts index b8421b8..eeb2404 100644 --- a/src/hu/spec.ts +++ b/src/hu/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/hu"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/is/grammar.js b/src/is/grammar.js new file mode 100644 index 0000000..5857928 --- /dev/null +++ b/src/is/grammar.js @@ -0,0 +1,4080 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "ka", + peg$c61 = peg$literalExpectation("ka", false), + peg$c62 = "fli", + peg$c63 = peg$literalExpectation("fli", false), + peg$c64 = "fla", + peg$c65 = peg$literalExpectation("fla", false), + peg$c66 = "p", + peg$c67 = peg$literalExpectation("p", false), + peg$c68 = /^[\xEDi]/i, + peg$c69 = peg$classExpectation(["\xED", "i"], false, true), + peg$c70 = "tuli", + peg$c71 = peg$literalExpectation("tuli", false), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "vers", + peg$c74 = peg$literalExpectation("vers", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "og", + peg$c83 = peg$literalExpectation("og", false), + peg$c84 = function() { return "" }, + peg$c85 = /^[\-\u2013\u2014]/, + peg$c86 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c87 = "title", + peg$c88 = peg$literalExpectation("title", false), + peg$c89 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c90 = "from", + peg$c91 = peg$literalExpectation("from", false), + peg$c92 = "of", + peg$c93 = peg$literalExpectation("of", false), + peg$c94 = "in", + peg$c95 = peg$literalExpectation("in", false), + peg$c96 = "the", + peg$c97 = peg$literalExpectation("the", false), + peg$c98 = "book", + peg$c99 = peg$literalExpectation("book", false), + peg$c100 = /^[([]/, + peg$c101 = peg$classExpectation(["(", "["], false, false), + peg$c102 = /^[)\]]/, + peg$c103 = peg$classExpectation([")", "]"], false, false), + peg$c104 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = "\x1E", + peg$c106 = peg$literalExpectation("\x1E", false), + peg$c107 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = ",000", + peg$c109 = peg$literalExpectation(",000", false), + peg$c110 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c111 = /^[^\x1F\x1E([]/, + peg$c112 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c113 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c114 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[\s\xa0*]/, + peg$c116 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c60) { + s3 = peg$c60; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c62) { + s4 = peg$c62; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c64) { + s4 = peg$c64; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 112) { + s5 = peg$c66; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s5 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c70) { + s7 = peg$c70; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + 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) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c73) { + s2 = peg$c73; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c87) { + s2 = peg$c87; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c89(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s2 = peg$c90; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s2 = peg$c92; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c96) { + s5 = peg$c96; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c98) { + s7 = peg$c98; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s9 = peg$c92; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c105; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c105; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c113(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c100.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/is/spec.ts b/src/is/spec.ts index 1a6d278..4d029b6 100644 --- a/src/is/spec.ts +++ b/src/is/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/is"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/it/grammar.js b/src/it/grammar.js new file mode 100644 index 0000000..411ebac --- /dev/null +++ b/src/it/grammar.js @@ -0,0 +1,4395 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ss", + peg$c41 = peg$literalExpectation("ss", false), + peg$c42 = "ecc", + peg$c43 = peg$literalExpectation("ecc", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a-d]/, + peg$c60 = peg$classExpectation([["a", "d"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "c", + peg$c63 = peg$literalExpectation("c", false), + peg$c64 = "apitoli", + peg$c65 = peg$literalExpectation("apitoli", false), + peg$c66 = "apitolo", + peg$c67 = peg$literalExpectation("apitolo", false), + peg$c68 = "app", + peg$c69 = peg$literalExpectation("app", false), + peg$c70 = "ap", + peg$c71 = peg$literalExpectation("ap", false), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "v", + peg$c74 = peg$literalExpectation("v", false), + peg$c75 = "ersetto", + peg$c76 = peg$literalExpectation("ersetto", false), + peg$c77 = "ersetti", + peg$c78 = peg$literalExpectation("ersetti", false), + peg$c79 = "ersi", + peg$c80 = peg$literalExpectation("ersi", false), + peg$c81 = function() { return {"type": "v_explicit"} }, + peg$c82 = ":", + peg$c83 = peg$literalExpectation(":", false), + peg$c84 = /^["']/, + peg$c85 = peg$classExpectation(["\"", "'"], false, false), + peg$c86 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c87 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c88 = "vedi", + peg$c89 = peg$literalExpectation("vedi", false), + peg$c90 = "anche", + peg$c91 = peg$literalExpectation("anche", false), + peg$c92 = "cfr", + peg$c93 = peg$literalExpectation("cfr", false), + peg$c94 = "e", + peg$c95 = peg$literalExpectation("e", false), + peg$c96 = function() { return "" }, + peg$c97 = /^[\-\u2013\u2014]/, + peg$c98 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c99 = "al", + peg$c100 = peg$literalExpectation("al", false), + peg$c101 = "titolo", + peg$c102 = peg$literalExpectation("titolo", false), + peg$c103 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = "from", + peg$c105 = peg$literalExpectation("from", false), + peg$c106 = "of", + peg$c107 = peg$literalExpectation("of", false), + peg$c108 = "in", + peg$c109 = peg$literalExpectation("in", false), + peg$c110 = "the", + peg$c111 = peg$literalExpectation("the", false), + peg$c112 = "book", + peg$c113 = peg$literalExpectation("book", false), + peg$c114 = /^[([]/, + peg$c115 = peg$classExpectation(["(", "["], false, false), + peg$c116 = /^[)\]]/, + peg$c117 = peg$classExpectation([")", "]"], false, false), + peg$c118 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = "\x1E", + peg$c120 = peg$literalExpectation("\x1E", false), + peg$c121 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c122 = ",000", + peg$c123 = peg$literalExpectation(",000", false), + peg$c124 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c125 = /^[^\x1F\x1E([]/, + peg$c126 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c127 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c128 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c129 = /^[\s\xa0*]/, + peg$c130 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c86 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 === peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c15; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsespace(); + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s6 = peg$c42; + peg$currPos += 3; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s3 = peg$c42; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s5 === peg$FAILED) { + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s6 = peg$c15; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s8 = peg$c42; + peg$currPos += 3; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s5 = peg$c42; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 99) { + s3 = peg$c62; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c64) { + s4 = peg$c64; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c66) { + s4 = peg$c66; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c68) { + s5 = peg$c68; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c70) { + s5 = peg$c70; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 99) { + s5 = peg$c62; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c75) { + s4 = peg$c75; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c77) { + s4 = peg$c77; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c79) { + s4 = peg$c79; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c73; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c82; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c82; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c86.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c88) { + s3 = peg$c88; + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c90) { + s5 = peg$c90; + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s2 = peg$c88; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c92) { + s2 = peg$c92; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s2 = peg$c94; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c86.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c88) { + s3 = peg$c88; + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c90) { + s5 = peg$c90; + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s2 = peg$c88; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c92) { + s2 = peg$c92; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s2 = peg$c94; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c97.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c99) { + s4 = peg$c99; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c97.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c99) { + s4 = peg$c99; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c101) { + s2 = peg$c101; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c104) { + s2 = peg$c104; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s2 = peg$c106; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c108) { + s2 = peg$c108; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c110) { + s5 = peg$c110; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c112) { + s7 = peg$c112; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s9 = peg$c106; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c114.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c116.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c117); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c119; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c119; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c121(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c124(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c125.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c126); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c125.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c126); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c127(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c114.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c128(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/it/spec.ts b/src/it/spec.ts index 220c476..0aa2dde 100644 --- a/src/it/spec.ts +++ b/src/it/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/it"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ja/grammar.js b/src/ja/grammar.js new file mode 100644 index 0000000..4a96a92 --- /dev/null +++ b/src/ja/grammar.js @@ -0,0 +1,4050 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u7AE0", + peg$c61 = peg$literalExpectation("\u7AE0", true), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "\u7BC0", + peg$c64 = peg$literalExpectation("\u7BC0", true), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "\uFF5E", + peg$c78 = peg$literalExpectation("\uFF5E", true), + peg$c79 = "~", + peg$c80 = peg$literalExpectation("~", false), + peg$c81 = "title", + peg$c82 = peg$literalExpectation("title", false), + peg$c83 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c84 = "from", + peg$c85 = peg$literalExpectation("from", false), + peg$c86 = "of", + peg$c87 = peg$literalExpectation("of", false), + peg$c88 = "in", + peg$c89 = peg$literalExpectation("in", false), + peg$c90 = "the", + peg$c91 = peg$literalExpectation("the", false), + peg$c92 = "book", + peg$c93 = peg$literalExpectation("book", false), + peg$c94 = /^[([]/, + peg$c95 = peg$classExpectation(["(", "["], false, false), + peg$c96 = /^[)\]]/, + peg$c97 = peg$classExpectation([")", "]"], false, false), + peg$c98 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c99 = "\x1E", + peg$c100 = peg$literalExpectation("\x1E", false), + peg$c101 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = ",000", + peg$c103 = peg$literalExpectation(",000", false), + peg$c104 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[^\x1F\x1E([]/, + peg$c106 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c107 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[\s\xa0*]/, + peg$c110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c60) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c63) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c79; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c79; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c81) { + s2 = peg$c81; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c84) { + s2 = peg$c84; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c90) { + s5 = peg$c90; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s7 = peg$c92; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s9 = peg$c86; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c96.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c99; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c94.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ja/spec.ts b/src/ja/spec.ts index 15294e9..19644a2 100644 --- a/src/ja/spec.ts +++ b/src/ja/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ja"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/jv/grammar.js b/src/jv/grammar.js new file mode 100644 index 0000000..ad5290f --- /dev/null +++ b/src/jv/grammar.js @@ -0,0 +1,4011 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "bab", + peg$c61 = peg$literalExpectation("bab", false), + peg$c62 = "pasal", + peg$c63 = peg$literalExpectation("pasal", false), + peg$c64 = function() { return {"type": "c_explicit"} }, + peg$c65 = "ayat", + peg$c66 = peg$literalExpectation("ayat", false), + peg$c67 = function() { return {"type": "v_explicit"} }, + peg$c68 = ":", + peg$c69 = peg$literalExpectation(":", false), + peg$c70 = /^["']/, + peg$c71 = peg$classExpectation(["\"", "'"], false, false), + peg$c72 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c73 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c74 = "&", + peg$c75 = peg$literalExpectation("&", false), + peg$c76 = function() { return "" }, + peg$c77 = /^[\-\u2013\u2014]/, + peg$c78 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c72 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c60) { + s2 = peg$c60; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c62) { + s2 = peg$c62; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c65) { + s2 = peg$c65; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c67(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c68; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c68; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c72.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 38) { + s2 = peg$c74; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c72.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 38) { + s2 = peg$c74; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c76(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/jv/spec.ts b/src/jv/spec.ts index 082b780..f61d64a 100644 --- a/src/jv/spec.ts +++ b/src/jv/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/jv"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ko/grammar.js b/src/ko/grammar.js new file mode 100644 index 0000000..74535e0 --- /dev/null +++ b/src/ko/grammar.js @@ -0,0 +1,4050 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\uC7A5", + peg$c61 = peg$literalExpectation("\uC7A5", true), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "\uC808", + peg$c64 = peg$literalExpectation("\uC808", true), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "\uFF5E", + peg$c78 = peg$literalExpectation("\uFF5E", true), + peg$c79 = "~", + peg$c80 = peg$literalExpectation("~", false), + peg$c81 = "title", + peg$c82 = peg$literalExpectation("title", false), + peg$c83 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c84 = "from", + peg$c85 = peg$literalExpectation("from", false), + peg$c86 = "of", + peg$c87 = peg$literalExpectation("of", false), + peg$c88 = "in", + peg$c89 = peg$literalExpectation("in", false), + peg$c90 = "the", + peg$c91 = peg$literalExpectation("the", false), + peg$c92 = "book", + peg$c93 = peg$literalExpectation("book", false), + peg$c94 = /^[([]/, + peg$c95 = peg$classExpectation(["(", "["], false, false), + peg$c96 = /^[)\]]/, + peg$c97 = peg$classExpectation([")", "]"], false, false), + peg$c98 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c99 = "\x1E", + peg$c100 = peg$literalExpectation("\x1E", false), + peg$c101 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = ",000", + peg$c103 = peg$literalExpectation(",000", false), + peg$c104 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[^\x1F\x1E([]/, + peg$c106 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c107 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[\s\xa0*]/, + peg$c110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c60) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c63) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c79; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c79; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c81) { + s2 = peg$c81; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c84) { + s2 = peg$c84; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c90) { + s5 = peg$c90; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s7 = peg$c92; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s9 = peg$c86; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c96.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c99; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c94.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ko/spec.ts b/src/ko/spec.ts index b571100..3ed3e89 100644 --- a/src/ko/spec.ts +++ b/src/ko/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ko"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/la/grammar.js b/src/la/grammar.js new file mode 100644 index 0000000..dd8581c --- /dev/null +++ b/src/la/grammar.js @@ -0,0 +1,4256 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "et", + peg$c41 = peg$literalExpectation("et", false), + peg$c42 = "sequentes", + peg$c43 = peg$literalExpectation("sequentes", false), + peg$c44 = "seq", + peg$c45 = peg$literalExpectation("seq", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "cap", + peg$c65 = peg$literalExpectation("cap", false), + peg$c66 = "ut", + peg$c67 = peg$literalExpectation("ut", false), + peg$c68 = function() { return {"type": "c_explicit"} }, + peg$c69 = "v", + peg$c70 = peg$literalExpectation("v", false), + peg$c71 = "ersus", + peg$c72 = peg$literalExpectation("ersus", false), + peg$c73 = "ers", + peg$c74 = peg$literalExpectation("ers", false), + peg$c75 = "er", + peg$c76 = peg$literalExpectation("er", false), + peg$c77 = function() { return {"type": "v_explicit"} }, + peg$c78 = ":", + peg$c79 = peg$literalExpectation(":", false), + peg$c80 = /^["']/, + peg$c81 = peg$classExpectation(["\"", "'"], false, false), + peg$c82 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c83 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c84 = function() { return "" }, + peg$c85 = /^[\-\u2013\u2014]/, + peg$c86 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c87 = "ad", + peg$c88 = peg$literalExpectation("ad", false), + peg$c89 = "titulus", + peg$c90 = peg$literalExpectation("titulus", false), + peg$c91 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c92 = "from", + peg$c93 = peg$literalExpectation("from", false), + peg$c94 = "of", + peg$c95 = peg$literalExpectation("of", false), + peg$c96 = "in", + peg$c97 = peg$literalExpectation("in", false), + peg$c98 = "the", + peg$c99 = peg$literalExpectation("the", false), + peg$c100 = "book", + peg$c101 = peg$literalExpectation("book", false), + peg$c102 = /^[([]/, + peg$c103 = peg$classExpectation(["(", "["], false, false), + peg$c104 = /^[)\]]/, + peg$c105 = peg$classExpectation([")", "]"], false, false), + peg$c106 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = "\x1E", + peg$c108 = peg$literalExpectation("\x1E", false), + peg$c109 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = ",000", + peg$c111 = peg$literalExpectation(",000", false), + peg$c112 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = /^[^\x1F\x1E([]/, + peg$c114 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c115 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c116 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = /^[\s\xa0*]/, + peg$c118 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c82 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsespace(); + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c42) { + s6 = peg$c42; + peg$currPos += 9; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsespace(); + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s6 = peg$c44; + peg$currPos += 3; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parseabbrev(); + if (s7 === peg$FAILED) { + s7 = null; + } + 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) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c42) { + s8 = peg$c42; + peg$currPos += 9; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 === peg$FAILED) { + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c44) { + s8 = peg$c44; + peg$currPos += 3; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s8 !== peg$FAILED) { + s9 = peg$parseabbrev(); + if (s9 === peg$FAILED) { + s9 = null; + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c64) { + s3 = peg$c64; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c66) { + s4 = peg$c66; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c71) { + s4 = peg$c71; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c73) { + s5 = peg$c73; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c75) { + s5 = peg$c75; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c78; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c78; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s2 = peg$c40; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s2 = peg$c40; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c87) { + s4 = peg$c87; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c87) { + s4 = peg$c87; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c89) { + s2 = peg$c89; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c91(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s2 = peg$c92; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c98) { + s5 = peg$c98; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s7 = peg$c100; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s9 = peg$c94; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c107; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c107; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c115(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c102.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/la/spec.ts b/src/la/spec.ts index c247b76..b3c039b 100644 --- a/src/la/spec.ts +++ b/src/la/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/la"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/mk/grammar.js b/src/mk/grammar.js new file mode 100644 index 0000000..e3968df --- /dev/null +++ b/src/mk/grammar.js @@ -0,0 +1,4031 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[\u0430\u0431]/i, + peg$c58 = peg$classExpectation(["\u0430", "\u0431"], false, true), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0433\u043B\u0430\u0432", + peg$c61 = peg$literalExpectation("\u0433\u043B\u0430\u0432", true), + peg$c62 = "\u0438", + peg$c63 = peg$literalExpectation("\u0438", true), + peg$c64 = "\u0430", + peg$c65 = peg$literalExpectation("\u0430", true), + peg$c66 = function() { return {"type": "c_explicit"} }, + peg$c67 = "verse", + peg$c68 = peg$literalExpectation("verse", false), + peg$c69 = function() { return {"type": "v_explicit"} }, + peg$c70 = ":", + peg$c71 = peg$literalExpectation(":", false), + peg$c72 = /^["']/, + peg$c73 = peg$classExpectation(["\"", "'"], false, false), + peg$c74 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c75 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c76 = function() { return "" }, + peg$c77 = /^[\-\u2013\u2014]/, + peg$c78 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c74 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c60) { + s3 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c62) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c64) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c66(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c67) { + s2 = peg$c67; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c62) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c62) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c76(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/mk/spec.ts b/src/mk/spec.ts index 2d0fc98..efeae5a 100644 --- a/src/mk/spec.ts +++ b/src/mk/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/mk"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/mr/grammar.js b/src/mr/grammar.js new file mode 100644 index 0000000..f5631af --- /dev/null +++ b/src/mr/grammar.js @@ -0,0 +1,4002 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "to", + peg$c78 = peg$literalExpectation("to", false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/mr/spec.ts b/src/mr/spec.ts index 654e681..6ce46b7 100644 --- a/src/mr/spec.ts +++ b/src/mr/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/mr"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ne/grammar.js b/src/ne/grammar.js new file mode 100644 index 0000000..db62a7c --- /dev/null +++ b/src/ne/grammar.js @@ -0,0 +1,4000 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "title", + peg$c78 = peg$literalExpectation("title", false), + peg$c79 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c80 = "from", + peg$c81 = peg$literalExpectation("from", false), + peg$c82 = "of", + peg$c83 = peg$literalExpectation("of", false), + peg$c84 = "in", + peg$c85 = peg$literalExpectation("in", false), + peg$c86 = "the", + peg$c87 = peg$literalExpectation("the", false), + peg$c88 = "book", + peg$c89 = peg$literalExpectation("book", false), + peg$c90 = /^[([]/, + peg$c91 = peg$classExpectation(["(", "["], false, false), + peg$c92 = /^[)\]]/, + peg$c93 = peg$classExpectation([")", "]"], false, false), + peg$c94 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c95 = "\x1E", + peg$c96 = peg$literalExpectation("\x1E", false), + peg$c97 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = ",000", + peg$c99 = peg$literalExpectation(",000", false), + peg$c100 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = /^[^\x1F\x1E([]/, + peg$c102 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c103 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[\s\xa0*]/, + peg$c106 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s2 = peg$c77; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c80) { + s2 = peg$c80; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c86) { + s5 = peg$c86; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s7 = peg$c88; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s9 = peg$c82; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c95; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c90.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ne/spec.ts b/src/ne/spec.ts index 12cfd0b..e2a494b 100644 --- a/src/ne/spec.ts +++ b/src/ne/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ne"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/nl/grammar.js b/src/nl/grammar.js new file mode 100644 index 0000000..c6b96c7 --- /dev/null +++ b/src/nl/grammar.js @@ -0,0 +1,4269 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "en", + peg$c41 = peg$literalExpectation("en", false), + peg$c42 = "volgende", + peg$c43 = peg$literalExpectation("volgende", false), + peg$c44 = "verzen", + peg$c45 = peg$literalExpectation("verzen", false), + peg$c46 = /^[a-z]/, + peg$c47 = peg$classExpectation([["a", "z"]], false, false), + peg$c48 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = "/9\x1F", + peg$c51 = peg$literalExpectation("/9\x1F", false), + peg$c52 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c53 = "/2\x1F", + peg$c54 = peg$literalExpectation("/2\x1F", false), + peg$c55 = ".1", + peg$c56 = peg$literalExpectation(".1", false), + peg$c57 = /^[0-9]/, + peg$c58 = peg$classExpectation([["0", "9"]], false, false), + peg$c59 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = /^[a-e]/, + peg$c62 = peg$classExpectation([["a", "e"]], false, false), + peg$c63 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c64 = "hoofdstuk", + peg$c65 = peg$literalExpectation("hoofdstuk", false), + peg$c66 = "ken", + peg$c67 = peg$literalExpectation("ken", false), + peg$c68 = "", + peg$c69 = function() { return {"type": "c_explicit"} }, + peg$c70 = "v", + peg$c71 = peg$literalExpectation("v", false), + peg$c72 = "erzen", + peg$c73 = peg$literalExpectation("erzen", false), + peg$c74 = "ers", + peg$c75 = peg$literalExpectation("ers", false), + peg$c76 = "s", + peg$c77 = peg$literalExpectation("s", false), + peg$c78 = function() { return {"type": "v_explicit"} }, + peg$c79 = ":", + peg$c80 = peg$literalExpectation(":", false), + peg$c81 = /^["']/, + peg$c82 = peg$classExpectation(["\"", "'"], false, false), + peg$c83 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c84 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c85 = "vgl", + peg$c86 = peg$literalExpectation("vgl", false), + peg$c87 = "zie", + peg$c88 = peg$literalExpectation("zie", false), + peg$c89 = "ook", + peg$c90 = peg$literalExpectation("ook", false), + peg$c91 = function() { return "" }, + peg$c92 = /^[\-\u2013\u2014]/, + peg$c93 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c94 = "opschrift", + peg$c95 = peg$literalExpectation("opschrift", false), + peg$c96 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "from", + peg$c98 = peg$literalExpectation("from", false), + peg$c99 = "of", + peg$c100 = peg$literalExpectation("of", false), + peg$c101 = "in", + peg$c102 = peg$literalExpectation("in", false), + peg$c103 = "the", + peg$c104 = peg$literalExpectation("the", false), + peg$c105 = "book", + peg$c106 = peg$literalExpectation("book", false), + peg$c107 = /^[([]/, + peg$c108 = peg$classExpectation(["(", "["], false, false), + peg$c109 = /^[)\]]/, + peg$c110 = peg$classExpectation([")", "]"], false, false), + peg$c111 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = "\x1E", + peg$c113 = peg$literalExpectation("\x1E", false), + peg$c114 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = ",000", + peg$c116 = peg$literalExpectation(",000", false), + peg$c117 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = /^[^\x1F\x1E([]/, + peg$c119 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c120 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c121 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c122 = /^[\s\xa0*]/, + peg$c123 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c83 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c42) { + s5 = peg$c42; + peg$currPos += 8; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c44) { + s7 = peg$c44; + peg$currPos += 6; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parseabbrev(); + if (s8 === peg$FAILED) { + s8 = null; + } + if (s8 !== peg$FAILED) { + s9 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s10 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s10 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s10 === peg$FAILED) { + s9 = void 0; + } else { + peg$currPos = s9; + s9 = peg$FAILED; + } + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c50) { + s3 = peg$c50; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c51); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c53) { + s3 = peg$c53; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c55) { + s2 = peg$c55; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c57.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c42) { + s8 = peg$c42; + peg$currPos += 8; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s9 = peg$parsespace(); + if (s9 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c44) { + s10 = peg$c44; + peg$currPos += 6; + } else { + s10 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + if (s10 !== peg$FAILED) { + s6 = [s6, s7, s8, s9, s10]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c61.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 9) === peg$c64) { + s3 = peg$c64; + peg$currPos += 9; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c66) { + s4 = peg$c66; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$c68; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c70; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c72) { + s4 = peg$c72; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c74) { + s4 = peg$c74; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c76; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c46.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c78(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c79; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c79; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c81.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c83.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s2 = peg$c40; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c85) { + s2 = peg$c85; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c87) { + s3 = peg$c87; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c89) { + s5 = peg$c89; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c83.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s2 = peg$c40; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c85) { + s2 = peg$c85; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c87) { + s3 = peg$c87; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c89) { + s5 = peg$c89; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c91(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c94) { + s2 = peg$c94; + peg$currPos += 9; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c97) { + s2 = peg$c97; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c99) { + s2 = peg$c99; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c101) { + s2 = peg$c101; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c103) { + s5 = peg$c103; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c105) { + s7 = peg$c105; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c99) { + s9 = peg$c99; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c107.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c109.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c112; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c112; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c118.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c119); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c118.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c119); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c107.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c121(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/nl/spec.ts b/src/nl/spec.ts index c5ad47d..190c3d5 100644 --- a/src/nl/spec.ts +++ b/src/nl/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/nl"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/no/grammar.js b/src/no/grammar.js new file mode 100644 index 0000000..32f1fae --- /dev/null +++ b/src/no/grammar.js @@ -0,0 +1,4160 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = "f", + peg$c43 = peg$literalExpectation("f", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a-e]/, + peg$c60 = peg$classExpectation([["a", "e"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "kap", + peg$c63 = peg$literalExpectation("kap", false), + peg$c64 = "ittelet", + peg$c65 = peg$literalExpectation("ittelet", false), + peg$c66 = "ittel", + peg$c67 = peg$literalExpectation("ittel", false), + peg$c68 = "itler", + peg$c69 = peg$literalExpectation("itler", false), + peg$c70 = "itlene", + peg$c71 = peg$literalExpectation("itlene", false), + peg$c72 = "itel", + peg$c73 = peg$literalExpectation("itel", false), + peg$c74 = function() { return {"type": "c_explicit"} }, + peg$c75 = "v", + peg$c76 = peg$literalExpectation("v", false), + peg$c77 = "ers", + peg$c78 = peg$literalExpectation("ers", false), + peg$c79 = function() { return {"type": "v_explicit"} }, + peg$c80 = ":", + peg$c81 = peg$literalExpectation(":", false), + peg$c82 = /^["']/, + peg$c83 = peg$classExpectation(["\"", "'"], false, false), + peg$c84 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c85 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c86 = "og", + peg$c87 = peg$literalExpectation("og", false), + peg$c88 = "cf", + peg$c89 = peg$literalExpectation("cf", false), + peg$c90 = "jf", + peg$c91 = peg$literalExpectation("jf", false), + peg$c92 = function() { return "" }, + peg$c93 = /^[\-\u2013\u2014]/, + peg$c94 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c95 = "overskrift", + peg$c96 = peg$literalExpectation("overskrift", false), + peg$c97 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = "from", + peg$c99 = peg$literalExpectation("from", false), + peg$c100 = "of", + peg$c101 = peg$literalExpectation("of", false), + peg$c102 = "in", + peg$c103 = peg$literalExpectation("in", false), + peg$c104 = "the", + peg$c105 = peg$literalExpectation("the", false), + peg$c106 = "book", + peg$c107 = peg$literalExpectation("book", false), + peg$c108 = /^[([]/, + peg$c109 = peg$classExpectation(["(", "["], false, false), + peg$c110 = /^[)\]]/, + peg$c111 = peg$classExpectation([")", "]"], false, false), + peg$c112 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = "\x1E", + peg$c114 = peg$literalExpectation("\x1E", false), + peg$c115 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c116 = ",000", + peg$c117 = peg$literalExpectation(",000", false), + peg$c118 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = /^[^\x1F\x1E([]/, + peg$c120 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c121 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c122 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c123 = /^[\s\xa0*]/, + peg$c124 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c84 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 102) { + s3 = peg$c42; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s5 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 102) { + s5 = peg$c42; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c62) { + s3 = peg$c62; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c64) { + s4 = peg$c64; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c66) { + s4 = peg$c66; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s4 = peg$c68; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c70) { + s4 = peg$c70; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c72) { + s4 = peg$c72; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c75; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c77) { + s4 = peg$c77; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s2 = peg$c90; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s2 = peg$c90; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c92(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 10) === peg$c95) { + s2 = peg$c95; + peg$currPos += 10; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c98) { + s2 = peg$c98; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c100) { + s2 = peg$c100; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s2 = peg$c102; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c104) { + s5 = peg$c104; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c106) { + s7 = peg$c106; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c100) { + s9 = peg$c100; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c108.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c110.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c113; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c113; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c115(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c119.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c119.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c120); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c121(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c108.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/no/spec.ts b/src/no/spec.ts index 843fe54..920604e 100644 --- a/src/no/spec.ts +++ b/src/no/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/no"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/or/grammar.js b/src/or/grammar.js new file mode 100644 index 0000000..d26b8a8 --- /dev/null +++ b/src/or/grammar.js @@ -0,0 +1,4002 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[\u0B16]/i, + peg$c58 = peg$classExpectation(["\u0B16"], false, true), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "\u0B20\u0B3E\u0B30\u0B41", + peg$c78 = peg$literalExpectation("\u0B20\u0B3E\u0B30\u0B41", true), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c77) { + s4 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c77) { + s4 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/or/spec.ts b/src/or/spec.ts index 6b3067d..15a9010 100644 --- a/src/or/spec.ts +++ b/src/or/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/or"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/pa/grammar.js b/src/pa/grammar.js new file mode 100644 index 0000000..ab36469 --- /dev/null +++ b/src/pa/grammar.js @@ -0,0 +1,4000 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "\u0A2A\u0A26", + peg$c64 = peg$literalExpectation("\u0A2A\u0A26", true), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "\u0A1C\u0A3E\u0A02", + peg$c73 = peg$literalExpectation("\u0A1C\u0A3E\u0A02", true), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "title", + peg$c78 = peg$literalExpectation("title", false), + peg$c79 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c80 = "from", + peg$c81 = peg$literalExpectation("from", false), + peg$c82 = "of", + peg$c83 = peg$literalExpectation("of", false), + peg$c84 = "in", + peg$c85 = peg$literalExpectation("in", false), + peg$c86 = "the", + peg$c87 = peg$literalExpectation("the", false), + peg$c88 = "book", + peg$c89 = peg$literalExpectation("book", false), + peg$c90 = /^[([]/, + peg$c91 = peg$classExpectation(["(", "["], false, false), + peg$c92 = /^[)\]]/, + peg$c93 = peg$classExpectation([")", "]"], false, false), + peg$c94 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c95 = "\x1E", + peg$c96 = peg$literalExpectation("\x1E", false), + peg$c97 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = ",000", + peg$c99 = peg$literalExpectation(",000", false), + peg$c100 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = /^[^\x1F\x1E([]/, + peg$c102 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c103 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[\s\xa0*]/, + peg$c106 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c63) { + s2 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s2 = peg$c77; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c80) { + s2 = peg$c80; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c86) { + s5 = peg$c86; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s7 = peg$c88; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s9 = peg$c82; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c95; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c90.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/pa/spec.ts b/src/pa/spec.ts index 97cef57..bb484e5 100644 --- a/src/pa/spec.ts +++ b/src/pa/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/pa"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/pl/grammar.js b/src/pl/grammar.js new file mode 100644 index 0000000..e360011 --- /dev/null +++ b/src/pl/grammar.js @@ -0,0 +1,4437 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "nn", + peg$c41 = peg$literalExpectation("nn", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = "n", + peg$c46 = peg$literalExpectation("n", false), + peg$c47 = /^[n]/, + peg$c48 = peg$classExpectation(["n"], false, false), + peg$c49 = function(val_1) { return {"type": "next_v", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c50 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/9\x1F", + peg$c52 = peg$literalExpectation("/9\x1F", false), + peg$c53 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c54 = "/2\x1F", + peg$c55 = peg$literalExpectation("/2\x1F", false), + peg$c56 = ".1", + peg$c57 = peg$literalExpectation(".1", false), + peg$c58 = /^[0-9]/, + peg$c59 = peg$classExpectation([["0", "9"]], false, false), + peg$c60 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c61 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = /^[a-e]/, + peg$c63 = peg$classExpectation([["a", "e"]], false, false), + peg$c64 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c65 = "r", + peg$c66 = peg$literalExpectation("r", false), + peg$c67 = "ozdzia\u0142y", + peg$c68 = peg$literalExpectation("ozdzia\u0142y", true), + peg$c69 = "ozdzia\u0142", + peg$c70 = peg$literalExpectation("ozdzia\u0142", true), + peg$c71 = /^[\xF3o]/i, + peg$c72 = peg$classExpectation(["\xF3", "o"], false, true), + peg$c73 = "w", + peg$c74 = peg$literalExpectation("w", false), + peg$c75 = "ozdz", + peg$c76 = peg$literalExpectation("ozdz", false), + peg$c77 = function() { return {"type": "c_explicit"} }, + peg$c78 = "erset", + peg$c79 = peg$literalExpectation("erset", false), + peg$c80 = "ersety", + peg$c81 = peg$literalExpectation("ersety", false), + peg$c82 = "ers", + peg$c83 = peg$literalExpectation("ers", false), + peg$c84 = function() { return {"type": "v_explicit"} }, + peg$c85 = ":", + peg$c86 = peg$literalExpectation(":", false), + peg$c87 = /^["']/, + peg$c88 = peg$classExpectation(["\"", "'"], false, false), + peg$c89 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c90 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c91 = "oraz", + peg$c92 = peg$literalExpectation("oraz", false), + peg$c93 = "por", + peg$c94 = peg$literalExpectation("por", false), + peg$c95 = "i", + peg$c96 = peg$literalExpectation("i", false), + peg$c97 = function() { return "" }, + peg$c98 = /^[\-\u2013\u2014]/, + peg$c99 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c100 = "do", + peg$c101 = peg$literalExpectation("do", false), + peg$c102 = "tytu\u0142", + peg$c103 = peg$literalExpectation("tytu\u0142", true), + peg$c104 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = "from", + peg$c106 = peg$literalExpectation("from", false), + peg$c107 = "of", + peg$c108 = peg$literalExpectation("of", false), + peg$c109 = "in", + peg$c110 = peg$literalExpectation("in", false), + peg$c111 = "the", + peg$c112 = peg$literalExpectation("the", false), + peg$c113 = "book", + peg$c114 = peg$literalExpectation("book", false), + peg$c115 = /^[([]/, + peg$c116 = peg$classExpectation(["(", "["], false, false), + peg$c117 = /^[)\]]/, + peg$c118 = peg$classExpectation([")", "]"], false, false), + peg$c119 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c120 = "\x1E", + peg$c121 = peg$literalExpectation("\x1E", false), + peg$c122 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c123 = ",000", + peg$c124 = peg$literalExpectation(",000", false), + peg$c125 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = /^[^\x1F\x1E([]/, + peg$c127 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c128 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c129 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c130 = /^[\s\xa0*]/, + peg$c131 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c89 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parsenext_v(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parsenext_v(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parsenext_v(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parsenext_v(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parsenext_v(); + if (s3 === peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parsenext_v() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 110) { + s3 = peg$c45; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (peg$c47.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c48); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseabbrev(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c49(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c53(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c54) { + s3 = peg$c54; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c55); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c56) { + s2 = peg$c56; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c57); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c58.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c59); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c60(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 110) { + s6 = peg$c45; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c47.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c48); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + 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) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c62.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 114) { + s3 = peg$c65; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c67) { + s4 = input.substr(peg$currPos, 8); + peg$currPos += 8; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c69) { + s5 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s5 !== peg$FAILED) { + if (peg$c71.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 119) { + s7 = peg$c73; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + 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) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c69) { + s4 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c75) { + s4 = peg$c75; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 114) { + s5 = peg$c65; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 119) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 5) === peg$c78) { + s5 = peg$c78; + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s5 !== peg$FAILED) { + if (peg$c71.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 119) { + s7 = peg$c73; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + 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) { + if (input.substr(peg$currPos, 6) === peg$c80) { + s4 = peg$c80; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c78) { + s4 = peg$c78; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c82) { + s5 = peg$c82; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c85; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c85; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c87.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c89.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s2 = peg$c91; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c93) { + s2 = peg$c93; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s2 = peg$c95; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c89.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c91) { + s2 = peg$c91; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c93) { + s2 = peg$c93; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s2 = peg$c95; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c98.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c100) { + s4 = peg$c100; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c98.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c100) { + s4 = peg$c100; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c102) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c105) { + s2 = peg$c105; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c107) { + s2 = peg$c107; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c109) { + s2 = peg$c109; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c111) { + s5 = peg$c111; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c113) { + s7 = peg$c113; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c107) { + s9 = peg$c107; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c117.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c119(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c119(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c120; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c121); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c120; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c121); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c58.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c59); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c58.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c59); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c126.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c126.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c128(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c115.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c129(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/pl/spec.ts b/src/pl/spec.ts index 4b13b06..67b51f3 100644 --- a/src/pl/spec.ts +++ b/src/pl/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/pl"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/pt/grammar.js b/src/pt/grammar.js new file mode 100644 index 0000000..e6c10e4 --- /dev/null +++ b/src/pt/grammar.js @@ -0,0 +1,4522 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "e", + peg$c41 = peg$literalExpectation("e", false), + peg$c42 = "sig", + peg$c43 = peg$literalExpectation("sig", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a-d]/, + peg$c60 = peg$classExpectation([["a", "d"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "cap", + peg$c63 = peg$literalExpectation("cap", false), + peg$c64 = /^[\xEDi]/i, + peg$c65 = peg$classExpectation(["\xED", "i"], false, true), + peg$c66 = "tulos", + peg$c67 = peg$literalExpectation("tulos", false), + peg$c68 = "tulo", + peg$c69 = peg$literalExpectation("tulo", false), + peg$c70 = "s", + peg$c71 = peg$literalExpectation("s", false), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "v", + peg$c74 = peg$literalExpectation("v", false), + peg$c75 = "ers", + peg$c76 = peg$literalExpectation("ers", false), + peg$c77 = "culos", + peg$c78 = peg$literalExpectation("culos", false), + peg$c79 = "culo", + peg$c80 = peg$literalExpectation("culo", false), + peg$c81 = "er", + peg$c82 = peg$literalExpectation("er", false), + peg$c83 = "ss", + peg$c84 = peg$literalExpectation("ss", false), + peg$c85 = function() { return {"type": "v_explicit"} }, + peg$c86 = ":", + peg$c87 = peg$literalExpectation(":", false), + peg$c88 = /^["']/, + peg$c89 = peg$classExpectation(["\"", "'"], false, false), + peg$c90 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c91 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c92 = function() { return "" }, + peg$c93 = /^[\-\u2013\u2014]/, + peg$c94 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c95 = "\xE1", + peg$c96 = peg$literalExpectation("\xE1", true), + peg$c97 = "t", + peg$c98 = peg$literalExpectation("t", false), + peg$c99 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "from", + peg$c101 = peg$literalExpectation("from", false), + peg$c102 = "of", + peg$c103 = peg$literalExpectation("of", false), + peg$c104 = "in", + peg$c105 = peg$literalExpectation("in", false), + peg$c106 = "the", + peg$c107 = peg$literalExpectation("the", false), + peg$c108 = "book", + peg$c109 = peg$literalExpectation("book", false), + peg$c110 = /^[([]/, + peg$c111 = peg$classExpectation(["(", "["], false, false), + peg$c112 = /^[)\]]/, + peg$c113 = peg$classExpectation([")", "]"], false, false), + peg$c114 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = "\x1E", + peg$c116 = peg$literalExpectation("\x1E", false), + peg$c117 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = ",000", + peg$c119 = peg$literalExpectation(",000", false), + peg$c120 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c121 = /^[^\x1F\x1E([]/, + peg$c122 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c123 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c124 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c125 = /^[\s\xa0*]/, + peg$c126 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c90 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s5 = peg$c42; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s7 = peg$parseabbrev(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s9 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s9 === peg$FAILED) { + s8 = void 0; + } else { + peg$currPos = s8; + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 101) { + s6 = peg$c40; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s8 = peg$c42; + peg$currPos += 3; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s9 = peg$parseabbrev(); + if (s9 === peg$FAILED) { + s9 = null; + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c62) { + s3 = peg$c62; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (peg$c64.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c66) { + s6 = peg$c66; + peg$currPos += 5; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (peg$c64.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s5 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c68) { + s6 = peg$c68; + peg$currPos += 4; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c70; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c75) { + s5 = peg$c75; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + if (peg$c64.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s7 = peg$c77; + peg$currPos += 5; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + 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 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c75) { + s5 = peg$c75; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + if (peg$c64.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c79) { + s7 = peg$c79; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + 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 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c75) { + s5 = peg$c75; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c81) { + s5 = peg$c81; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c83) { + s5 = peg$c83; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c70; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s5 = peg$c73; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c85(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c86; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c86; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c88.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 101) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s7 = peg$c42; + peg$currPos += 3; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 101) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsespace(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c42) { + s7 = peg$c42; + peg$currPos += 3; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c92(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c93.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c95) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 116) { + s2 = peg$c97; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s2 !== peg$FAILED) { + if (peg$c64.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c68) { + s4 = peg$c68; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + 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; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s2 = peg$c100; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s2 = peg$c102; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c106) { + s5 = peg$c106; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c108) { + s7 = peg$c108; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s9 = peg$c102; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c110.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c115; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c115; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c110.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c124(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/pt/spec.ts b/src/pt/spec.ts index bcde80d..bc147bb 100644 --- a/src/pt/spec.ts +++ b/src/pt/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/pt"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ro/grammar.js b/src/ro/grammar.js new file mode 100644 index 0000000..438a4d3 --- /dev/null +++ b/src/ro/grammar.js @@ -0,0 +1,4295 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "cap", + peg$c61 = peg$literalExpectation("cap", false), + peg$c62 = "itolele", + peg$c63 = peg$literalExpectation("itolele", false), + peg$c64 = "itolul", + peg$c65 = peg$literalExpectation("itolul", false), + peg$c66 = function() { return {"type": "c_explicit"} }, + peg$c67 = "v", + peg$c68 = peg$literalExpectation("v", false), + peg$c69 = "ersetul", + peg$c70 = peg$literalExpectation("ersetul", false), + peg$c71 = "ersetele", + peg$c72 = peg$literalExpectation("ersetele", false), + peg$c73 = "ersete", + peg$c74 = peg$literalExpectation("ersete", false), + peg$c75 = "ers", + peg$c76 = peg$literalExpectation("ers", false), + peg$c77 = "s", + peg$c78 = peg$literalExpectation("s", false), + peg$c79 = function() { return {"type": "v_explicit"} }, + peg$c80 = ":", + peg$c81 = peg$literalExpectation(":", false), + peg$c82 = /^["']/, + peg$c83 = peg$classExpectation(["\"", "'"], false, false), + peg$c84 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c85 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c86 = /^[\u015Fs]/i, + peg$c87 = peg$classExpectation(["\u015F", "s"], false, true), + peg$c88 = "i", + peg$c89 = peg$literalExpectation("i", false), + peg$c90 = "cf", + peg$c91 = peg$literalExpectation("cf", false), + peg$c92 = "cp", + peg$c93 = peg$literalExpectation("cp", false), + peg$c94 = function() { return "" }, + peg$c95 = /^[\-\u2013\u2014]/, + peg$c96 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c97 = "titlu", + peg$c98 = peg$literalExpectation("titlu", false), + peg$c99 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "from", + peg$c101 = peg$literalExpectation("from", false), + peg$c102 = "of", + peg$c103 = peg$literalExpectation("of", false), + peg$c104 = "in", + peg$c105 = peg$literalExpectation("in", false), + peg$c106 = "the", + peg$c107 = peg$literalExpectation("the", false), + peg$c108 = "book", + peg$c109 = peg$literalExpectation("book", false), + peg$c110 = /^[([]/, + peg$c111 = peg$classExpectation(["(", "["], false, false), + peg$c112 = /^[)\]]/, + peg$c113 = peg$classExpectation([")", "]"], false, false), + peg$c114 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = "\x1E", + peg$c116 = peg$literalExpectation("\x1E", false), + peg$c117 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = ",000", + peg$c119 = peg$literalExpectation(",000", false), + peg$c120 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c121 = /^[^\x1F\x1E([]/, + peg$c122 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c123 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c124 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c125 = /^[\s\xa0*]/, + peg$c126 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c84 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c60) { + s3 = peg$c60; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c62) { + s4 = peg$c62; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c64) { + s4 = peg$c64; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c66(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c67; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c69) { + s4 = peg$c69; + peg$currPos += 7; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c71) { + s4 = peg$c71; + peg$currPos += 8; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c73) { + s4 = peg$c73; + peg$currPos += 6; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c75) { + s5 = peg$c75; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 115) { + s5 = peg$c77; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (peg$c86.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s4 = peg$c88; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c90) { + s3 = peg$c90; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c92) { + s3 = peg$c92; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (peg$c86.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 105) { + s4 = peg$c88; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c90) { + s3 = peg$c90; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c92) { + s3 = peg$c92; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c97) { + s2 = peg$c97; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s2 = peg$c100; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s2 = peg$c102; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c106) { + s5 = peg$c106; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c108) { + s7 = peg$c108; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c102) { + s9 = peg$c102; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c110.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c115; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c115; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c121.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c122); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c110.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c124(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ro/spec.ts b/src/ro/spec.ts index 565dfc3..f6318dd 100644 --- a/src/ro/spec.ts +++ b/src/ro/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ro"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ru/grammar.js b/src/ru/grammar.js new file mode 100644 index 0000000..8287b1a --- /dev/null +++ b/src/ru/grammar.js @@ -0,0 +1,4123 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "\u0438", + peg$c41 = peg$literalExpectation("\u0438", true), + peg$c42 = "\u0434\u0430\u043B\u0435\u0435", + peg$c43 = peg$literalExpectation("\u0434\u0430\u043B\u0435\u0435", true), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[\u0430\u0431]/i, + peg$c60 = peg$classExpectation(["\u0430", "\u0431"], false, true), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "\u0433\u043B", + peg$c63 = peg$literalExpectation("\u0433\u043B", true), + peg$c64 = "\u0430\u0432\u044B", + peg$c65 = peg$literalExpectation("\u0430\u0432\u044B", true), + peg$c66 = "\u0430\u0432", + peg$c67 = peg$literalExpectation("\u0430\u0432", true), + peg$c68 = "", + peg$c69 = function() { return {"type": "c_explicit"} }, + peg$c70 = "\u0441\u0442\u0438\u0445", + peg$c71 = peg$literalExpectation("\u0441\u0442\u0438\u0445", true), + peg$c72 = function() { return {"type": "v_explicit"} }, + peg$c73 = ":", + peg$c74 = peg$literalExpectation(":", false), + peg$c75 = /^["']/, + peg$c76 = peg$classExpectation(["\"", "'"], false, false), + peg$c77 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c78 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c79 = function() { return "" }, + peg$c80 = /^[\-\u2013\u2014]/, + peg$c81 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c82 = "\u2014", + peg$c83 = peg$literalExpectation("\u2014", true), + peg$c84 = "\u043D\u0430\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u044F\u0445", + peg$c85 = peg$literalExpectation("\u043D\u0430\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u044F\u0445", true), + peg$c86 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c87 = "from", + peg$c88 = peg$literalExpectation("from", false), + peg$c89 = "of", + peg$c90 = peg$literalExpectation("of", false), + peg$c91 = "in", + peg$c92 = peg$literalExpectation("in", false), + peg$c93 = "the", + peg$c94 = peg$literalExpectation("the", false), + peg$c95 = "book", + peg$c96 = peg$literalExpectation("book", false), + peg$c97 = /^[([]/, + peg$c98 = peg$classExpectation(["(", "["], false, false), + peg$c99 = /^[)\]]/, + peg$c100 = peg$classExpectation([")", "]"], false, false), + peg$c101 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = "\x1E", + peg$c103 = peg$literalExpectation("\x1E", false), + peg$c104 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = ",000", + peg$c106 = peg$literalExpectation(",000", false), + peg$c107 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = /^[^\x1F\x1E([]/, + peg$c109 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c110 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c111 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = /^[\s\xa0*]/, + peg$c113 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c77 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsespace(); + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c42) { + s5 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s7 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s8 === peg$FAILED) { + s7 = void 0; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsespace(); + if (s7 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c42) { + s8 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c62) { + s3 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c64) { + s4 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c66) { + s4 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + s5 = peg$c68; + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c70) { + s3 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 === peg$FAILED) { + s4 = peg$c68; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c73; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c77.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c77.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c40) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c82) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c82) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c84) { + s2 = input.substr(peg$currPos, 11); + peg$currPos += 11; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c87) { + s2 = peg$c87; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c89) { + s2 = peg$c89; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c91) { + s2 = peg$c91; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c93) { + s5 = peg$c93; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c95) { + s7 = peg$c95; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c89) { + s9 = peg$c89; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c99.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c102; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c102; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c108.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c108.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c97.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ru/spec.ts b/src/ru/spec.ts index a50ab43..52a0cd9 100644 --- a/src/ru/spec.ts +++ b/src/ru/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ru"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/sk/grammar.js b/src/sk/grammar.js new file mode 100644 index 0000000..3a7691f --- /dev/null +++ b/src/sk/grammar.js @@ -0,0 +1,4240 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[b-e]/, + peg$c58 = peg$classExpectation([["b", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "kapitoly", + peg$c61 = peg$literalExpectation("kapitoly", false), + peg$c62 = "kapitole", + peg$c63 = peg$literalExpectation("kapitole", false), + peg$c64 = "kapitolu", + peg$c65 = peg$literalExpectation("kapitolu", false), + peg$c66 = "kapitol", + peg$c67 = peg$literalExpectation("kapitol", false), + peg$c68 = "hlavy", + peg$c69 = peg$literalExpectation("hlavy", false), + peg$c70 = "kap", + peg$c71 = peg$literalExpectation("kap", false), + peg$c72 = function() { return {"type": "c_explicit"} }, + peg$c73 = "ver", + peg$c74 = peg$literalExpectation("ver", false), + peg$c75 = /^[\u0161s]/i, + peg$c76 = peg$classExpectation(["\u0161", "s"], false, true), + peg$c77 = "ov", + peg$c78 = peg$literalExpectation("ov", false), + peg$c79 = function() { return {"type": "v_explicit"} }, + peg$c80 = ":", + peg$c81 = peg$literalExpectation(":", false), + peg$c82 = /^["']/, + peg$c83 = peg$classExpectation(["\"", "'"], false, false), + peg$c84 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c85 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c86 = "porov", + peg$c87 = peg$literalExpectation("porov", false), + peg$c88 = "pozri", + peg$c89 = peg$literalExpectation("pozri", false), + peg$c90 = "alebo", + peg$c91 = peg$literalExpectation("alebo", false), + peg$c92 = "a", + peg$c93 = peg$literalExpectation("a", false), + peg$c94 = function() { return "" }, + peg$c95 = /^[\-\u2013\u2014]/, + peg$c96 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c97 = /^[\u017Ez]/i, + peg$c98 = peg$classExpectation(["\u017E", "z"], false, true), + peg$c99 = "title", + peg$c100 = peg$literalExpectation("title", false), + peg$c101 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = "from", + peg$c103 = peg$literalExpectation("from", false), + peg$c104 = "of", + peg$c105 = peg$literalExpectation("of", false), + peg$c106 = "in", + peg$c107 = peg$literalExpectation("in", false), + peg$c108 = "the", + peg$c109 = peg$literalExpectation("the", false), + peg$c110 = "book", + peg$c111 = peg$literalExpectation("book", false), + peg$c112 = /^[([]/, + peg$c113 = peg$classExpectation(["(", "["], false, false), + peg$c114 = /^[)\]]/, + peg$c115 = peg$classExpectation([")", "]"], false, false), + peg$c116 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = "\x1E", + peg$c118 = peg$literalExpectation("\x1E", false), + peg$c119 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c120 = ",000", + peg$c121 = peg$literalExpectation(",000", false), + peg$c122 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c123 = /^[^\x1F\x1E([]/, + peg$c124 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c125 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c127 = /^[\s\xa0*]/, + peg$c128 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c84 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c60) { + s2 = peg$c60; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c62) { + s2 = peg$c62; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c64) { + s2 = peg$c64; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c66) { + s2 = peg$c66; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c68) { + s2 = peg$c68; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c70) { + s3 = peg$c70; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c72(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c73) { + s3 = peg$c73; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s3 !== peg$FAILED) { + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c77) { + s5 = peg$c77; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } 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) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c80; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c86) { + s2 = peg$c86; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c88) { + s2 = peg$c88; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c90) { + s2 = peg$c90; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 97) { + s2 = peg$c92; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c84.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c86) { + s2 = peg$c86; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c88) { + s2 = peg$c88; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c90) { + s2 = peg$c90; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 97) { + s2 = peg$c92; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s4 = peg$c92; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s4 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s4 = peg$c92; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s4 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c99) { + s2 = peg$c99; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s2 = peg$c102; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s2 = peg$c106; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c108) { + s5 = peg$c108; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c110) { + s7 = peg$c110; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s9 = peg$c104; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c114.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c117; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c117; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c119(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c112.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c126(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/sk/spec.ts b/src/sk/spec.ts index c09f1cb..399bedb 100644 --- a/src/sk/spec.ts +++ b/src/sk/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/sk"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/so/grammar.js b/src/so/grammar.js new file mode 100644 index 0000000..18080de --- /dev/null +++ b/src/so/grammar.js @@ -0,0 +1,4000 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "iyo", + peg$c73 = peg$literalExpectation("iyo", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "title", + peg$c78 = peg$literalExpectation("title", false), + peg$c79 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c80 = "from", + peg$c81 = peg$literalExpectation("from", false), + peg$c82 = "of", + peg$c83 = peg$literalExpectation("of", false), + peg$c84 = "in", + peg$c85 = peg$literalExpectation("in", false), + peg$c86 = "the", + peg$c87 = peg$literalExpectation("the", false), + peg$c88 = "book", + peg$c89 = peg$literalExpectation("book", false), + peg$c90 = /^[([]/, + peg$c91 = peg$classExpectation(["(", "["], false, false), + peg$c92 = /^[)\]]/, + peg$c93 = peg$classExpectation([")", "]"], false, false), + peg$c94 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c95 = "\x1E", + peg$c96 = peg$literalExpectation("\x1E", false), + peg$c97 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = ",000", + peg$c99 = peg$literalExpectation(",000", false), + peg$c100 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = /^[^\x1F\x1E([]/, + peg$c102 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c103 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[\s\xa0*]/, + peg$c106 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s2 = peg$c77; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c80) { + s2 = peg$c80; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c86) { + s5 = peg$c86; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s7 = peg$c88; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s9 = peg$c82; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c95; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c90.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/so/spec.ts b/src/so/spec.ts index 3528af6..2239aaa 100644 --- a/src/so/spec.ts +++ b/src/so/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/so"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/sq/grammar.js b/src/sq/grammar.js new file mode 100644 index 0000000..db62a7c --- /dev/null +++ b/src/sq/grammar.js @@ -0,0 +1,4000 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "and", + peg$c73 = peg$literalExpectation("and", false), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "title", + peg$c78 = peg$literalExpectation("title", false), + peg$c79 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c80 = "from", + peg$c81 = peg$literalExpectation("from", false), + peg$c82 = "of", + peg$c83 = peg$literalExpectation("of", false), + peg$c84 = "in", + peg$c85 = peg$literalExpectation("in", false), + peg$c86 = "the", + peg$c87 = peg$literalExpectation("the", false), + peg$c88 = "book", + peg$c89 = peg$literalExpectation("book", false), + peg$c90 = /^[([]/, + peg$c91 = peg$classExpectation(["(", "["], false, false), + peg$c92 = /^[)\]]/, + peg$c93 = peg$classExpectation([")", "]"], false, false), + peg$c94 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c95 = "\x1E", + peg$c96 = peg$literalExpectation("\x1E", false), + peg$c97 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = ",000", + peg$c99 = peg$literalExpectation(",000", false), + peg$c100 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = /^[^\x1F\x1E([]/, + peg$c102 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c103 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[\s\xa0*]/, + peg$c106 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c72) { + s2 = peg$c72; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s2 = peg$c77; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c80) { + s2 = peg$c80; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c86) { + s5 = peg$c86; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s7 = peg$c88; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s9 = peg$c82; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c95; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c90.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/sq/spec.ts b/src/sq/spec.ts index 0dfc829..a6ab28c 100644 --- a/src/sq/spec.ts +++ b/src/sq/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/sq"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/sr/grammar.js b/src/sr/grammar.js new file mode 100644 index 0000000..7f3c5be --- /dev/null +++ b/src/sr/grammar.js @@ -0,0 +1,4037 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a\u0430\u0431]/i, + peg$c58 = peg$classExpectation(["a", "\u0430", "\u0431"], false, true), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u043F\u043E\u0433\u043B\u0430\u0432\u0459\u0430", + peg$c61 = peg$literalExpectation("\u043F\u043E\u0433\u043B\u0430\u0432\u0459\u0430", true), + peg$c62 = "\u0433\u043B\u0430\u0432\u0430", + peg$c63 = peg$literalExpectation("\u0433\u043B\u0430\u0432\u0430", true), + peg$c64 = function() { return {"type": "c_explicit"} }, + peg$c65 = "\u0441\u0442\u0438\u0445", + peg$c66 = peg$literalExpectation("\u0441\u0442\u0438\u0445", true), + peg$c67 = "\u043E\u0432\u0438", + peg$c68 = peg$literalExpectation("\u043E\u0432\u0438", true), + peg$c69 = "", + peg$c70 = function() { return {"type": "v_explicit"} }, + peg$c71 = ":", + peg$c72 = peg$literalExpectation(":", false), + peg$c73 = /^["']/, + peg$c74 = peg$classExpectation(["\"", "'"], false, false), + peg$c75 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c76 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c77 = "\u0438", + peg$c78 = peg$literalExpectation("\u0438", true), + peg$c79 = function() { return "" }, + peg$c80 = /^[\-\u2013\u2014]/, + peg$c81 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c82 = "title", + peg$c83 = peg$literalExpectation("title", false), + peg$c84 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c85 = "from", + peg$c86 = peg$literalExpectation("from", false), + peg$c87 = "of", + peg$c88 = peg$literalExpectation("of", false), + peg$c89 = "in", + peg$c90 = peg$literalExpectation("in", false), + peg$c91 = "the", + peg$c92 = peg$literalExpectation("the", false), + peg$c93 = "book", + peg$c94 = peg$literalExpectation("book", false), + peg$c95 = /^[([]/, + peg$c96 = peg$classExpectation(["(", "["], false, false), + peg$c97 = /^[)\]]/, + peg$c98 = peg$classExpectation([")", "]"], false, false), + peg$c99 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "\x1E", + peg$c101 = peg$literalExpectation("\x1E", false), + peg$c102 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = ",000", + peg$c104 = peg$literalExpectation(",000", false), + peg$c105 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = /^[^\x1F\x1E([]/, + peg$c107 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c108 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = /^[\s\xa0*]/, + peg$c111 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c75 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 8); + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c62) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c65) { + s3 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c67) { + s4 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s4 === peg$FAILED) { + s4 = peg$c69; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c70(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c71; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c71; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c73.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c75.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c75.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c77) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c80.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c82) { + s2 = peg$c82; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c85) { + s2 = peg$c85; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s2 = peg$c87; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c89) { + s2 = peg$c89; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c91) { + s5 = peg$c91; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c93) { + s7 = peg$c93; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s9 = peg$c87; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c95.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c100; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c100; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/sr/spec.ts b/src/sr/spec.ts index 6bd634e..0513511 100644 --- a/src/sr/spec.ts +++ b/src/sr/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/sr"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/sv/grammar.js b/src/sv/grammar.js new file mode 100644 index 0000000..6136195 --- /dev/null +++ b/src/sv/grammar.js @@ -0,0 +1,4222 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = "f", + peg$c43 = peg$literalExpectation("f", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[a-e]/, + peg$c60 = peg$classExpectation([["a", "e"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "kap", + peg$c63 = peg$literalExpectation("kap", false), + peg$c64 = "itlen", + peg$c65 = peg$literalExpectation("itlen", false), + peg$c66 = "itlet", + peg$c67 = peg$literalExpectation("itlet", false), + peg$c68 = "itel", + peg$c69 = peg$literalExpectation("itel", false), + peg$c70 = function() { return {"type": "c_explicit"} }, + peg$c71 = "v", + peg$c72 = peg$literalExpectation("v", false), + peg$c73 = "erser", + peg$c74 = peg$literalExpectation("erser", false), + peg$c75 = function() { return {"type": "v_explicit"} }, + peg$c76 = ":", + peg$c77 = peg$literalExpectation(":", false), + peg$c78 = /^["']/, + peg$c79 = peg$classExpectation(["\"", "'"], false, false), + peg$c80 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c81 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c82 = "och", + peg$c83 = peg$literalExpectation("och", false), + peg$c84 = "jfr", + peg$c85 = peg$literalExpectation("jfr", false), + peg$c86 = function() { return "" }, + peg$c87 = /^[\-\u2013\u2014]/, + peg$c88 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c89 = "till", + peg$c90 = peg$literalExpectation("till", false), + peg$c91 = "rubrik", + peg$c92 = peg$literalExpectation("rubrik", false), + peg$c93 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c94 = "from", + peg$c95 = peg$literalExpectation("from", false), + peg$c96 = "of", + peg$c97 = peg$literalExpectation("of", false), + peg$c98 = "in", + peg$c99 = peg$literalExpectation("in", false), + peg$c100 = "the", + peg$c101 = peg$literalExpectation("the", false), + peg$c102 = "book", + peg$c103 = peg$literalExpectation("book", false), + peg$c104 = /^[([]/, + peg$c105 = peg$classExpectation(["(", "["], false, false), + peg$c106 = /^[)\]]/, + peg$c107 = peg$classExpectation([")", "]"], false, false), + peg$c108 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = "\x1E", + peg$c110 = peg$literalExpectation("\x1E", false), + peg$c111 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c112 = ",000", + peg$c113 = peg$literalExpectation(",000", false), + peg$c114 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[^\x1F\x1E([]/, + peg$c116 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c117 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c118 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c119 = /^[\s\xa0*]/, + peg$c120 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c80 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s4 = peg$c40; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseabbrev(); + if (s5 === peg$FAILED) { + s5 = null; + } + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s4 = peg$c42; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseabbrev(); + if (s5 === peg$FAILED) { + s5 = null; + } + 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) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c40) { + s6 = peg$c40; + peg$currPos += 2; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parseabbrev(); + if (s7 === peg$FAILED) { + s7 = null; + } + 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 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 102) { + s6 = peg$c42; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parseabbrev(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c62) { + s3 = peg$c62; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c64) { + s4 = peg$c64; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c66) { + s4 = peg$c66; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c68) { + s4 = peg$c68; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c70(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 118) { + s3 = peg$c71; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c73) { + s4 = peg$c73; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c75(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c76; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c82) { + s2 = peg$c82; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c82) { + s2 = peg$c82; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c84) { + s3 = peg$c84; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c89) { + s4 = peg$c89; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c89) { + s4 = peg$c89; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c91) { + s2 = peg$c91; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c93(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c94) { + s2 = peg$c94; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c98) { + s2 = peg$c98; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c100) { + s5 = peg$c100; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s7 = peg$c102; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s9 = peg$c96; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c106.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c109; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c109; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c110); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c111(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c115.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c116); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c117(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c104.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/sv/spec.ts b/src/sv/spec.ts index 8131592..0d9e027 100644 --- a/src/sv/spec.ts +++ b/src/sv/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/sv"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/sw/grammar.js b/src/sw/grammar.js new file mode 100644 index 0000000..a9b6087 --- /dev/null +++ b/src/sw/grammar.js @@ -0,0 +1,4056 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "sura", + peg$c61 = peg$literalExpectation("sura", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "mistari", + peg$c64 = peg$literalExpectation("mistari", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "taz", + peg$c73 = peg$literalExpectation("taz", false), + peg$c74 = "na", + peg$c75 = peg$literalExpectation("na", false), + peg$c76 = function() { return "" }, + peg$c77 = /^[\-\u2013\u2014]/, + peg$c78 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c79 = "hadi", + peg$c80 = peg$literalExpectation("hadi", false), + peg$c81 = "title", + peg$c82 = peg$literalExpectation("title", false), + peg$c83 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c84 = "from", + peg$c85 = peg$literalExpectation("from", false), + peg$c86 = "of", + peg$c87 = peg$literalExpectation("of", false), + peg$c88 = "in", + peg$c89 = peg$literalExpectation("in", false), + peg$c90 = "the", + peg$c91 = peg$literalExpectation("the", false), + peg$c92 = "book", + peg$c93 = peg$literalExpectation("book", false), + peg$c94 = /^[([]/, + peg$c95 = peg$classExpectation(["(", "["], false, false), + peg$c96 = /^[)\]]/, + peg$c97 = peg$classExpectation([")", "]"], false, false), + peg$c98 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c99 = "\x1E", + peg$c100 = peg$literalExpectation("\x1E", false), + peg$c101 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = ",000", + peg$c103 = peg$literalExpectation(",000", false), + peg$c104 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[^\x1F\x1E([]/, + peg$c106 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c107 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = /^[\s\xa0*]/, + peg$c110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c60) { + s2 = peg$c60; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c63) { + s2 = peg$c63; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c72) { + s3 = peg$c72; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c74) { + s2 = peg$c74; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c72) { + s3 = peg$c72; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c74) { + s2 = peg$c74; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c76(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c79) { + s4 = peg$c79; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c77.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c79) { + s4 = peg$c79; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c81) { + s2 = peg$c81; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c84) { + s2 = peg$c84; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c88) { + s2 = peg$c88; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c90) { + s5 = peg$c90; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s7 = peg$c92; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s9 = peg$c86; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c96.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c98(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c99; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c105.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c94.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/sw/spec.ts b/src/sw/spec.ts index a81a8c7..7d3cf88 100644 --- a/src/sw/spec.ts +++ b/src/sw/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/sw"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ta/grammar.js b/src/ta/grammar.js new file mode 100644 index 0000000..8c55b53 --- /dev/null +++ b/src/ta/grammar.js @@ -0,0 +1,4028 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0B85\u0BA4\u0BBF", + peg$c61 = peg$literalExpectation("\u0B85\u0BA4\u0BBF", true), + peg$c62 = "\u0B95\u0BBE\u0BB0\u0BAE\u0BCD", + peg$c63 = peg$literalExpectation("\u0B95\u0BBE\u0BB0\u0BAE\u0BCD", true), + peg$c64 = "", + peg$c65 = function() { return {"type": "c_explicit"} }, + peg$c66 = "verse", + peg$c67 = peg$literalExpectation("verse", false), + peg$c68 = function() { return {"type": "v_explicit"} }, + peg$c69 = ":", + peg$c70 = peg$literalExpectation(":", false), + peg$c71 = /^["']/, + peg$c72 = peg$classExpectation(["\"", "'"], false, false), + peg$c73 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c74 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c75 = "\u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD", + peg$c76 = peg$literalExpectation("\u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD", true), + peg$c77 = function() { return "" }, + peg$c78 = /^[\-\u2013\u2014]/, + peg$c79 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c80 = "to", + peg$c81 = peg$literalExpectation("to", false), + peg$c82 = "title", + peg$c83 = peg$literalExpectation("title", false), + peg$c84 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c85 = "from", + peg$c86 = peg$literalExpectation("from", false), + peg$c87 = "of", + peg$c88 = peg$literalExpectation("of", false), + peg$c89 = "in", + peg$c90 = peg$literalExpectation("in", false), + peg$c91 = "the", + peg$c92 = peg$literalExpectation("the", false), + peg$c93 = "book", + peg$c94 = peg$literalExpectation("book", false), + peg$c95 = /^[([]/, + peg$c96 = peg$classExpectation(["(", "["], false, false), + peg$c97 = /^[)\]]/, + peg$c98 = peg$classExpectation([")", "]"], false, false), + peg$c99 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = "\x1E", + peg$c101 = peg$literalExpectation("\x1E", false), + peg$c102 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = ",000", + peg$c104 = peg$literalExpectation(",000", false), + peg$c105 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = /^[^\x1F\x1E([]/, + peg$c107 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c108 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c109 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = /^[\s\xa0*]/, + peg$c111 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c73 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c60) { + s3 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c62) { + s4 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s4 === peg$FAILED) { + s4 = peg$c64; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c66) { + s2 = peg$c66; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c69; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c71.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c73.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c75) { + s2 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c73.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c75) { + s2 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c78.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c80) { + s4 = peg$c80; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c78.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c80) { + s4 = peg$c80; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c82) { + s2 = peg$c82; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c85) { + s2 = peg$c85; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s2 = peg$c87; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c89) { + s2 = peg$c89; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c91) { + s5 = peg$c91; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c93) { + s7 = peg$c93; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c87) { + s9 = peg$c87; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c95.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c100; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c100; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c106.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c108(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c95.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ta/spec.ts b/src/ta/spec.ts index e1378e5..23aef78 100644 --- a/src/ta/spec.ts +++ b/src/ta/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ta"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/th/grammar.js b/src/th/grammar.js new file mode 100644 index 0000000..b29dc7e --- /dev/null +++ b/src/th/grammar.js @@ -0,0 +1,4000 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0E1A\u0E17\u0E17\u0E35\u0E48", + peg$c61 = peg$literalExpectation("\u0E1A\u0E17\u0E17\u0E35\u0E48", true), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "\u0E41\u0E25\u0E30", + peg$c73 = peg$literalExpectation("\u0E41\u0E25\u0E30", true), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "title", + peg$c78 = peg$literalExpectation("title", false), + peg$c79 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c80 = "from", + peg$c81 = peg$literalExpectation("from", false), + peg$c82 = "of", + peg$c83 = peg$literalExpectation("of", false), + peg$c84 = "in", + peg$c85 = peg$literalExpectation("in", false), + peg$c86 = "the", + peg$c87 = peg$literalExpectation("the", false), + peg$c88 = "book", + peg$c89 = peg$literalExpectation("book", false), + peg$c90 = /^[([]/, + peg$c91 = peg$classExpectation(["(", "["], false, false), + peg$c92 = /^[)\]]/, + peg$c93 = peg$classExpectation([")", "]"], false, false), + peg$c94 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c95 = "\x1E", + peg$c96 = peg$literalExpectation("\x1E", false), + peg$c97 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c98 = ",000", + peg$c99 = peg$literalExpectation(",000", false), + peg$c100 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c101 = /^[^\x1F\x1E([]/, + peg$c102 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c103 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = /^[\s\xa0*]/, + peg$c106 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c77) { + s2 = peg$c77; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c80) { + s2 = peg$c80; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s2 = peg$c82; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c86) { + s5 = peg$c86; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c88) { + s7 = peg$c88; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c82) { + s9 = peg$c82; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c90.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c95; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c97(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c100(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c101.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c90.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/th/spec.ts b/src/th/spec.ts index 1e554c9..dc47dd8 100644 --- a/src/th/spec.ts +++ b/src/th/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/th"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/tl/grammar.js b/src/tl/grammar.js new file mode 100644 index 0000000..8438df5 --- /dev/null +++ b/src/tl/grammar.js @@ -0,0 +1,4072 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "k", + peg$c41 = peg$literalExpectation("k", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "pangkat", + peg$c61 = peg$literalExpectation("pangkat", false), + peg$c62 = "pang", + peg$c63 = peg$literalExpectation("pang", false), + peg$c64 = "kapitulo", + peg$c65 = peg$literalExpectation("kapitulo", false), + peg$c66 = "kap", + peg$c67 = peg$literalExpectation("kap", false), + peg$c68 = function() { return {"type": "c_explicit"} }, + peg$c69 = "tal", + peg$c70 = peg$literalExpectation("tal", false), + peg$c71 = "atang", + peg$c72 = peg$literalExpectation("atang", false), + peg$c73 = function() { return {"type": "v_explicit"} }, + peg$c74 = ":", + peg$c75 = peg$literalExpectation(":", false), + peg$c76 = /^["']/, + peg$c77 = peg$classExpectation(["\"", "'"], false, false), + peg$c78 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c79 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c80 = "at", + peg$c81 = peg$literalExpectation("at", false), + peg$c82 = function() { return "" }, + peg$c83 = /^[\-\u2013\u2014]/, + peg$c84 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c85 = "titik", + peg$c86 = peg$literalExpectation("titik", false), + peg$c87 = "pamagat", + peg$c88 = peg$literalExpectation("pamagat", false), + peg$c89 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c90 = "from", + peg$c91 = peg$literalExpectation("from", false), + peg$c92 = "of", + peg$c93 = peg$literalExpectation("of", false), + peg$c94 = "in", + peg$c95 = peg$literalExpectation("in", false), + peg$c96 = "the", + peg$c97 = peg$literalExpectation("the", false), + peg$c98 = "book", + peg$c99 = peg$literalExpectation("book", false), + peg$c100 = /^[([]/, + peg$c101 = peg$classExpectation(["(", "["], false, false), + peg$c102 = /^[)\]]/, + peg$c103 = peg$classExpectation([")", "]"], false, false), + peg$c104 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = "\x1E", + peg$c106 = peg$literalExpectation("\x1E", false), + peg$c107 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = ",000", + peg$c109 = peg$literalExpectation(",000", false), + peg$c110 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c111 = /^[^\x1F\x1E([]/, + peg$c112 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c113 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c114 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[\s\xa0*]/, + peg$c116 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c78 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 107) { + s3 = peg$c40; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 107) { + s5 = peg$c40; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c62) { + s2 = peg$c62; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c64) { + s2 = peg$c64; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c66) { + s2 = peg$c66; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c69) { + s3 = peg$c69; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c71) { + s4 = peg$c71; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s4 === peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c73(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c74; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c74; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c76.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c80) { + s2 = peg$c80; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c78.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c80) { + s2 = peg$c80; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c82(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c83.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c83.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c85) { + s2 = peg$c85; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c87) { + s2 = peg$c87; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c89(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s2 = peg$c90; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s2 = peg$c92; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c96) { + s5 = peg$c96; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c98) { + s7 = peg$c98; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s9 = peg$c92; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c105; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c105; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c113(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c100.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/tl/spec.ts b/src/tl/spec.ts index ae5dbdf..59efe69 100644 --- a/src/tl/spec.ts +++ b/src/tl/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/tl"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/tr/grammar.js b/src/tr/grammar.js new file mode 100644 index 0000000..9634d89 --- /dev/null +++ b/src/tr/grammar.js @@ -0,0 +1,4175 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "vs", + peg$c41 = peg$literalExpectation("vs", false), + peg$c42 = "vd", + peg$c43 = peg$literalExpectation("vd", false), + peg$c44 = /^[a-z]/, + peg$c45 = peg$classExpectation([["a", "z"]], false, false), + peg$c46 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c47 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c48 = "/9\x1F", + peg$c49 = peg$literalExpectation("/9\x1F", false), + peg$c50 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c51 = "/2\x1F", + peg$c52 = peg$literalExpectation("/2\x1F", false), + peg$c53 = ".1", + peg$c54 = peg$literalExpectation(".1", false), + peg$c55 = /^[0-9]/, + peg$c56 = peg$classExpectation([["0", "9"]], false, false), + peg$c57 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c58 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c59 = /^[b-e]/, + peg$c60 = peg$classExpectation([["b", "e"]], false, false), + peg$c61 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c62 = "b", + peg$c63 = peg$literalExpectation("b", false), + peg$c64 = "aplar", + peg$c65 = peg$literalExpectation("aplar", false), + peg$c66 = "ap", + peg$c67 = peg$literalExpectation("ap", false), + peg$c68 = "p", + peg$c69 = peg$literalExpectation("p", false), + peg$c70 = function() { return {"type": "c_explicit"} }, + peg$c71 = "a", + peg$c72 = peg$literalExpectation("a", false), + peg$c73 = "yeti", + peg$c74 = peg$literalExpectation("yeti", false), + peg$c75 = "yet", + peg$c76 = peg$literalExpectation("yet", false), + peg$c77 = function() { return {"type": "v_explicit"} }, + peg$c78 = ":", + peg$c79 = peg$literalExpectation(":", false), + peg$c80 = /^["']/, + peg$c81 = peg$classExpectation(["\"", "'"], false, false), + peg$c82 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c83 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c84 = "ve", + peg$c85 = peg$literalExpectation("ve", false), + peg$c86 = function() { return "" }, + peg$c87 = /^[\-\u2013\u2014]/, + peg$c88 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c89 = "ile", + peg$c90 = peg$literalExpectation("ile", false), + peg$c91 = "ba", + peg$c92 = peg$literalExpectation("ba", false), + peg$c93 = /^[\u015Fs]/i, + peg$c94 = peg$classExpectation(["\u015F", "s"], false, true), + peg$c95 = "l", + peg$c96 = peg$literalExpectation("l", false), + peg$c97 = /^[\u0130Ii\u0131]/i, + peg$c98 = peg$classExpectation(["\u0130", "I", "i", "\u0131"], false, true), + peg$c99 = "k", + peg$c100 = peg$literalExpectation("k", false), + peg$c101 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c102 = "from", + peg$c103 = peg$literalExpectation("from", false), + peg$c104 = "of", + peg$c105 = peg$literalExpectation("of", false), + peg$c106 = "in", + peg$c107 = peg$literalExpectation("in", false), + peg$c108 = "the", + peg$c109 = peg$literalExpectation("the", false), + peg$c110 = "book", + peg$c111 = peg$literalExpectation("book", false), + peg$c112 = /^[([]/, + peg$c113 = peg$classExpectation(["(", "["], false, false), + peg$c114 = /^[)\]]/, + peg$c115 = peg$classExpectation([")", "]"], false, false), + peg$c116 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = "\x1E", + peg$c118 = peg$literalExpectation("\x1E", false), + peg$c119 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c120 = ",000", + peg$c121 = peg$literalExpectation(",000", false), + peg$c122 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c123 = /^[^\x1F\x1E([]/, + peg$c124 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c125 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c126 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c127 = /^[\s\xa0*]/, + peg$c128 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c82 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c42) { + s3 = peg$c42; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c46(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c48) { + s3 = peg$c48; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c51) { + s3 = peg$c51; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c53) { + s2 = peg$c53; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c55.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c57(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c58(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s5 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c42) { + s5 = peg$c42; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c59.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 98) { + s3 = peg$c62; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c64) { + s4 = peg$c64; + peg$currPos += 5; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c66) { + s4 = peg$c66; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 112) { + s5 = peg$c68; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseabbrev(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c70(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 97) { + s3 = peg$c71; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c73) { + s4 = peg$c73; + peg$currPos += 4; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c75) { + s4 = peg$c75; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c44.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c45); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c78; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c78; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c80.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c82.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c89) { + s4 = peg$c89; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c87.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c89) { + s4 = peg$c89; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c91) { + s2 = peg$c91; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 !== peg$FAILED) { + if (peg$c93.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 108) { + s4 = peg$c95; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s4 !== peg$FAILED) { + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 107) { + s6 = peg$c99; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c101(s2); + 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; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c102) { + s2 = peg$c102; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s2 = peg$c104; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c106) { + s2 = peg$c106; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c107); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c108) { + s5 = peg$c108; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c109); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c110) { + s7 = peg$c110; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c104) { + s9 = peg$c104; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c112.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c114.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c115); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c117; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c117; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c118); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c119(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c55.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c123.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c124); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c125(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c112.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c113); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c126(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/tr/spec.ts b/src/tr/spec.ts index 953e9c7..93618c5 100644 --- a/src/tr/spec.ts +++ b/src/tr/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/tr"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/uk/grammar.js b/src/uk/grammar.js new file mode 100644 index 0000000..45ae273 --- /dev/null +++ b/src/uk/grammar.js @@ -0,0 +1,4068 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a\u0430\u0431]/i, + peg$c58 = peg$classExpectation(["a", "\u0430", "\u0431"], false, true), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0433\u043B\u0430\u0432\u0438", + peg$c61 = peg$literalExpectation("\u0433\u043B\u0430\u0432\u0438", true), + peg$c62 = "\u0433\u043B\u0430\u0432\u0430", + peg$c63 = peg$literalExpectation("\u0433\u043B\u0430\u0432\u0430", true), + peg$c64 = "\u0433\u043B", + peg$c65 = peg$literalExpectation("\u0433\u043B", true), + peg$c66 = "\u0440\u043E\u0437\u0434\u0456\u043B", + peg$c67 = peg$literalExpectation("\u0440\u043E\u0437\u0434\u0456\u043B", true), + peg$c68 = "\u0440\u043E\u0437\u0434", + peg$c69 = peg$literalExpectation("\u0440\u043E\u0437\u0434", true), + peg$c70 = function() { return {"type": "c_explicit"} }, + peg$c71 = "\u0432\u0456\u0440\u0448", + peg$c72 = peg$literalExpectation("\u0432\u0456\u0440\u0448", true), + peg$c73 = "\u0456", + peg$c74 = peg$literalExpectation("\u0456", true), + peg$c75 = "", + peg$c76 = function() { return {"type": "v_explicit"} }, + peg$c77 = ":", + peg$c78 = peg$literalExpectation(":", false), + peg$c79 = /^["']/, + peg$c80 = peg$classExpectation(["\"", "'"], false, false), + peg$c81 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c82 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c83 = function() { return "" }, + peg$c84 = /^[\-\u2013\u2014]/, + peg$c85 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c86 = "title", + peg$c87 = peg$literalExpectation("title", false), + peg$c88 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c89 = "from", + peg$c90 = peg$literalExpectation("from", false), + peg$c91 = "of", + peg$c92 = peg$literalExpectation("of", false), + peg$c93 = "in", + peg$c94 = peg$literalExpectation("in", false), + peg$c95 = "the", + peg$c96 = peg$literalExpectation("the", false), + peg$c97 = "book", + peg$c98 = peg$literalExpectation("book", false), + peg$c99 = /^[([]/, + peg$c100 = peg$classExpectation(["(", "["], false, false), + peg$c101 = /^[)\]]/, + peg$c102 = peg$classExpectation([")", "]"], false, false), + peg$c103 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c104 = "\x1E", + peg$c105 = peg$literalExpectation("\x1E", false), + peg$c106 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = ",000", + peg$c108 = peg$literalExpectation(",000", false), + peg$c109 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = /^[^\x1F\x1E([]/, + peg$c111 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c112 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c114 = /^[\s\xa0*]/, + peg$c115 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c81 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c62) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c64) { + s2 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c66) { + s2 = input.substr(peg$currPos, 6); + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c68) { + s2 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c70(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c71) { + s3 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c72); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c73) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s4 === peg$FAILED) { + s4 = peg$c75; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c76(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c77; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c77; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c79.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c81.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c73) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c81.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c73) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c74); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c83(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c84.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c84.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c86) { + s2 = peg$c86; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c88(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c89) { + s2 = peg$c89; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c91) { + s2 = peg$c91; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c93) { + s2 = peg$c93; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c94); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c95) { + s5 = peg$c95; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c97) { + s7 = peg$c97; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c91) { + s9 = peg$c91; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c92); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c99.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c101.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c102); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c104; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c104; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c110.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c110.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c111); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c99.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c100); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c113(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/uk/spec.ts b/src/uk/spec.ts index c2d48d6..6f22552 100644 --- a/src/uk/spec.ts +++ b/src/uk/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/uk"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/ur/grammar.js b/src/ur/grammar.js new file mode 100644 index 0000000..2288c19 --- /dev/null +++ b/src/ur/grammar.js @@ -0,0 +1,4086 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "\u0628\u0627\u0628", + peg$c61 = peg$literalExpectation("\u0628\u0627\u0628", true), + peg$c62 = "\u0627\u0628\u0648\u0627\u0628", + peg$c63 = peg$literalExpectation("\u0627\u0628\u0648\u0627\u0628", true), + peg$c64 = function() { return {"type": "c_explicit"} }, + peg$c65 = "\u0622\u06CC", + peg$c66 = peg$literalExpectation("\u0622\u06CC", true), + peg$c67 = "\u062A", + peg$c68 = peg$literalExpectation("\u062A", true), + peg$c69 = "\u0627\u062A", + peg$c70 = peg$literalExpectation("\u0627\u062A", true), + peg$c71 = function() { return {"type": "v_explicit"} }, + peg$c72 = ":", + peg$c73 = peg$literalExpectation(":", false), + peg$c74 = /^["']/, + peg$c75 = peg$classExpectation(["\"", "'"], false, false), + peg$c76 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c77 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c78 = "\u060C", + peg$c79 = peg$literalExpectation("\u060C", true), + peg$c80 = "\u061B", + peg$c81 = peg$literalExpectation("\u061B", true), + peg$c82 = "\u06D4", + peg$c83 = peg$literalExpectation("\u06D4", true), + peg$c84 = function() { return "" }, + peg$c85 = /^[\-\u2013\u2014]/, + peg$c86 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c87 = "\u062A\u0627", + peg$c88 = peg$literalExpectation("\u062A\u0627", true), + peg$c89 = "title", + peg$c90 = peg$literalExpectation("title", false), + peg$c91 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c92 = "from", + peg$c93 = peg$literalExpectation("from", false), + peg$c94 = "of", + peg$c95 = peg$literalExpectation("of", false), + peg$c96 = "in", + peg$c97 = peg$literalExpectation("in", false), + peg$c98 = "the", + peg$c99 = peg$literalExpectation("the", false), + peg$c100 = "book", + peg$c101 = peg$literalExpectation("book", false), + peg$c102 = /^[([]/, + peg$c103 = peg$classExpectation(["(", "["], false, false), + peg$c104 = /^[)\]]/, + peg$c105 = peg$classExpectation([")", "]"], false, false), + peg$c106 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = "\x1E", + peg$c108 = peg$literalExpectation("\x1E", false), + peg$c109 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c110 = ",000", + peg$c111 = peg$literalExpectation(",000", false), + peg$c112 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c113 = /^[^\x1F\x1E([]/, + peg$c114 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c115 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c116 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c117 = /^[\s\xa0*]/, + peg$c118 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c76 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c62) { + s2 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c63); } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c64(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c65) { + s3 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c66); } + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c67) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + if (s4 === peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c69) { + s4 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c70); } + } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c71(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c72; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c72; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c74.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c76.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c78) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c80) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c82) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c76.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c78) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c80) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c82) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c87) { + s4 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c85.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c87) { + s4 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c89) { + s2 = peg$c89; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c90); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c91(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c92) { + s2 = peg$c92; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c96) { + s2 = peg$c96; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c98) { + s5 = peg$c98; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c100) { + s7 = peg$c100; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s9 = peg$c94; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c104.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c107; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c107; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c109(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c112(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c113.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c115(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c102.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/ur/spec.ts b/src/ur/spec.ts index 53097cc..1e1ad96 100644 --- a/src/ur/spec.ts +++ b/src/ur/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/ur"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/vi/grammar.js b/src/vi/grammar.js new file mode 100644 index 0000000..e25c575 --- /dev/null +++ b/src/vi/grammar.js @@ -0,0 +1,4002 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "ch\u01B0\u01A1ng", + peg$c61 = peg$literalExpectation("ch\u01B0\u01A1ng", true), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "v\xE0", + peg$c73 = peg$literalExpectation("v\xE0", true), + peg$c74 = function() { return "" }, + peg$c75 = /^[\-\u2013\u2014]/, + peg$c76 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c77 = "to", + peg$c78 = peg$literalExpectation("to", false), + peg$c79 = "title", + peg$c80 = peg$literalExpectation("title", false), + peg$c81 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c82 = "from", + peg$c83 = peg$literalExpectation("from", false), + peg$c84 = "of", + peg$c85 = peg$literalExpectation("of", false), + peg$c86 = "in", + peg$c87 = peg$literalExpectation("in", false), + peg$c88 = "the", + peg$c89 = peg$literalExpectation("the", false), + peg$c90 = "book", + peg$c91 = peg$literalExpectation("book", false), + peg$c92 = /^[([]/, + peg$c93 = peg$classExpectation(["(", "["], false, false), + peg$c94 = /^[)\]]/, + peg$c95 = peg$classExpectation([")", "]"], false, false), + peg$c96 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c97 = "\x1E", + peg$c98 = peg$literalExpectation("\x1E", false), + peg$c99 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c100 = ",000", + peg$c101 = peg$literalExpectation(",000", false), + peg$c102 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c103 = /^[^\x1F\x1E([]/, + peg$c104 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c105 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c106 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c107 = /^[\s\xa0*]/, + peg$c108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c60) { + s2 = input.substr(peg$currPos, 6); + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c72) { + s2 = input.substr(peg$currPos, 2); + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c74(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c75.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c76); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c77) { + s4 = peg$c77; + peg$currPos += 2; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c78); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c79) { + s2 = peg$c79; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c80); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c81(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c82) { + s2 = peg$c82; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s2 = peg$c84; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c86) { + s2 = peg$c86; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c87); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c88) { + s5 = peg$c88; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s7 = peg$c90; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c84) { + s9 = peg$c84; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c85); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c92.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c94.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c96(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c97; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c97; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c103.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c104); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c105(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c92.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/vi/spec.ts b/src/vi/spec.ts index 1b2c48a..be08a79 100644 --- a/src/vi/spec.ts +++ b/src/vi/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/vi"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/src/zh/grammar.js b/src/zh/grammar.js new file mode 100644 index 0000000..829dc36 --- /dev/null +++ b/src/zh/grammar.js @@ -0,0 +1,4110 @@ +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +"use strict"; + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + 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, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + 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(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(val_1, val_2) { val_2.unshift([val_1]); return {"type": "sequence", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c1 = "(", + peg$c2 = peg$literalExpectation("(", false), + peg$c3 = ")", + peg$c4 = peg$literalExpectation(")", false), + peg$c5 = function(val_1, val_2) { if (typeof(val_2) === "undefined") val_2 = []; val_2.unshift([val_1]); return {"type": "sequence_post_enclosed", "value": val_2, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c6 = function(val_1, val_2) { if (val_1.length && val_1.length === 2) val_1 = val_1[0]; // for `b`, which returns [object, undefined] + return {"type": "range", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c7 = "\x1F", + peg$c8 = peg$literalExpectation("\x1F", false), + peg$c9 = "/", + peg$c10 = peg$literalExpectation("/", false), + peg$c11 = /^[1-8]/, + peg$c12 = peg$classExpectation([["1", "8"]], false, false), + peg$c13 = function(val) { return {"type": "b", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c14 = function(val_1, val_2) { return {"type": "bc", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c15 = ",", + peg$c16 = peg$literalExpectation(",", false), + peg$c17 = function(val_1, val_2) { return {"type": "bc_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c18 = ".", + peg$c19 = peg$literalExpectation(".", false), + peg$c20 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c21 = "-", + peg$c22 = peg$literalExpectation("-", false), + peg$c23 = function(val_1, val_2, val_3, val_4) { return {"type": "range", "value": [{"type": "bcv", "value": [{"type": "bc", "value": [val_1, val_2], "indices": [val_1.indices[0], val_2.indices[1]]}, val_3], "indices": [val_1.indices[0], val_3.indices[1]]}, val_4], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c24 = function(val_1, val_2) { return {"type": "bv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c25 = function(val_1, val_2) { return {"type": "bc", "value": [val_2, val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c26 = function(val_1, val_2, val_3) { return {"type": "cb_range", "value": [val_3, val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c27 = "th", + peg$c28 = peg$literalExpectation("th", false), + peg$c29 = "nd", + peg$c30 = peg$literalExpectation("nd", false), + peg$c31 = "st", + peg$c32 = peg$literalExpectation("st", false), + peg$c33 = "/1\x1F", + peg$c34 = peg$literalExpectation("/1\x1F", false), + peg$c35 = function(val) { return {"type": "c_psalm", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c36 = function(val_1, val_2) { return {"type": "cv_psalm", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c37 = function(val_1, val_2) { return {"type": "c_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c38 = function(val_1, val_2) { return {"type": "cv", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c39 = function(val) { return {"type": "c", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c40 = "ff", + peg$c41 = peg$literalExpectation("ff", false), + peg$c42 = /^[a-z]/, + peg$c43 = peg$classExpectation([["a", "z"]], false, false), + peg$c44 = function(val_1) { return {"type": "ff", "value": [val_1], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c45 = function(val_1, val_2) { return {"type": "integer_title", "value": [val_1, val_2], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c46 = "/9\x1F", + peg$c47 = peg$literalExpectation("/9\x1F", false), + peg$c48 = function(val) { return {"type": "context", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c49 = "/2\x1F", + peg$c50 = peg$literalExpectation("/2\x1F", false), + peg$c51 = ".1", + peg$c52 = peg$literalExpectation(".1", false), + peg$c53 = /^[0-9]/, + peg$c54 = peg$classExpectation([["0", "9"]], false, false), + peg$c55 = function(val) { return {"type": "bc", "value": [val, {"type": "c", "value": [{"type": "integer", "value": 151, "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$currPos - 2, peg$currPos - 1]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c56 = function(val_1, val_2) { return {"type": "bcv", "value": [val_1, {"type": "v", "value": [val_2], "indices": [val_2.indices[0], val_2.indices[1]]}], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c57 = /^[a-e]/, + peg$c58 = peg$classExpectation([["a", "e"]], false, false), + peg$c59 = function(val) { return {"type": "v", "value": [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c60 = "chapter", + peg$c61 = peg$literalExpectation("chapter", false), + peg$c62 = function() { return {"type": "c_explicit"} }, + peg$c63 = "verse", + peg$c64 = peg$literalExpectation("verse", false), + peg$c65 = function() { return {"type": "v_explicit"} }, + peg$c66 = ":", + peg$c67 = peg$literalExpectation(":", false), + peg$c68 = /^["']/, + peg$c69 = peg$classExpectation(["\"", "'"], false, false), + peg$c70 = /^[,;\/:&\-\u2013\u2014~]/, + peg$c71 = peg$classExpectation([",", ";", "/", ":", "&", "-", "\u2013", "\u2014", "~"], false, false), + peg$c72 = "\uFF1B", + peg$c73 = peg$literalExpectation("\uFF1B", true), + peg$c74 = "\uFF0C", + peg$c75 = peg$literalExpectation("\uFF0C", true), + peg$c76 = "\u53C3", + peg$c77 = peg$literalExpectation("\u53C3", true), + peg$c78 = "\u3001", + peg$c79 = peg$literalExpectation("\u3001", true), + peg$c80 = function() { return "" }, + peg$c81 = /^[\-\u2013\u2014]/, + peg$c82 = peg$classExpectation(["-", "\u2013", "\u2014"], false, false), + peg$c83 = "\uFF5E", + peg$c84 = peg$literalExpectation("\uFF5E", true), + peg$c85 = "~", + peg$c86 = peg$literalExpectation("~", false), + peg$c87 = "\u7BC7", + peg$c88 = peg$literalExpectation("\u7BC7", true), + peg$c89 = function(val) { return {type:"title", value: [val], "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c90 = "from", + peg$c91 = peg$literalExpectation("from", false), + peg$c92 = "of", + peg$c93 = peg$literalExpectation("of", false), + peg$c94 = "in", + peg$c95 = peg$literalExpectation("in", false), + peg$c96 = "the", + peg$c97 = peg$literalExpectation("the", false), + peg$c98 = "book", + peg$c99 = peg$literalExpectation("book", false), + peg$c100 = /^[([]/, + peg$c101 = peg$classExpectation(["(", "["], false, false), + peg$c102 = /^[)\]]/, + peg$c103 = peg$classExpectation([")", "]"], false, false), + peg$c104 = function(val) { return {"type": "translation_sequence", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c105 = "\x1E", + peg$c106 = peg$literalExpectation("\x1E", false), + peg$c107 = function(val) { return {"type": "translation", "value": val.value, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c108 = ",000", + peg$c109 = peg$literalExpectation(",000", false), + peg$c110 = function(val) { return {"type": "integer", "value": parseInt(val.join(""), 10), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c111 = /^[^\x1F\x1E([]/, + peg$c112 = peg$classExpectation(["\x1F", "\x1E", "(", "["], true, false), + peg$c113 = function(val) { return {"type": "word", "value": val.join(""), "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c114 = function(val) { return {"type": "stop", "value": val, "indices": [peg$savedPos, peg$currPos - 1]} }, + peg$c115 = /^[\s\xa0*]/, + peg$c116 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", "*"], false, false), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + if ("punctuation_strategy" in options && options.punctuation_strategy === "eu") { + peg$parsecv_sep = peg$parseeu_cv_sep; + peg$c70 = /^[;\/:&\-\u2013\u2014~]/; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description, location) { + location = location !== void 0 ? 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 !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) + + throw peg$buildSimpleError(message, location); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$anyExpectation() { + return { type: "any" }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], 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, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + 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(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() { + var s0, s1; + + s0 = []; + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence_enclosed(); + if (s1 === peg$FAILED) { + s1 = peg$parsetranslation_sequence(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + if (s1 === peg$FAILED) { + s1 = peg$parseword(); + if (s1 === peg$FAILED) { + s1 = peg$parseword_parenthesis(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsecb_range(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_hyphen_range(); + if (s1 === peg$FAILED) { + s1 = peg$parserange(); + if (s1 === peg$FAILED) { + s1 = peg$parseff(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parseb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsecontext(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesequence_post(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + 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; + s1 = peg$c0(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_post_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 40) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesequence_sep(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesequence_post(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesequence_post(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s7 = peg$c3; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(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; + } + + return s0; + } + + function peg$parsesequence_post() { + var s0; + + s0 = peg$parsesequence_post_enclosed(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_hyphen_range(); + if (s0 === peg$FAILED) { + s0 = peg$parserange(); + if (s0 === peg$FAILED) { + s0 = peg$parseff(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_comma(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv(); + if (s0 === peg$FAILED) { + s0 = peg$parsebcv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parseps151_bc(); + if (s0 === peg$FAILED) { + s0 = peg$parsebc(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parsebv(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_psalm(); + if (s0 === peg$FAILED) { + s0 = peg$parseb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecbv_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb(); + if (s0 === peg$FAILED) { + s0 = peg$parsecb_ordinal(); + if (s0 === peg$FAILED) { + s0 = peg$parsec_title(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger_title(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv(); + if (s0 === peg$FAILED) { + s0 = peg$parsecv_weak(); + if (s0 === peg$FAILED) { + s0 = peg$parsev_letter(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parsec(); + if (s0 === peg$FAILED) { + s0 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parserange() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv_comma(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseb(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parserange_sep(); + if (s5 !== peg$FAILED) { + s6 = peg$parsebcv_comma(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc_title(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv(); + if (s6 === peg$FAILED) { + s6 = peg$parsebcv_weak(); + if (s6 === peg$FAILED) { + s6 = peg$parseps151_bc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebc(); + if (s6 === peg$FAILED) { + s6 = peg$parsebv(); + if (s6 === peg$FAILED) { + s6 = peg$parseb(); + } + } + } + } + } + } + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } 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) { + s1 = peg$parsecbv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecbv_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_psalm(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb(); + if (s1 === peg$FAILED) { + s1 = peg$parsecb_ordinal(); + if (s1 === peg$FAILED) { + s1 = peg$parsec_title(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_title(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsev_letter(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parserange_sep(); + if (s2 !== peg$FAILED) { + s3 = peg$parseff(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_comma(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv(); + if (s3 === peg$FAILED) { + s3 = peg$parsebcv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parseps151_bc(); + if (s3 === peg$FAILED) { + s3 = peg$parsebc(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsebv(); + if (s3 === peg$FAILED) { + s3 = peg$parseb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv(); + if (s3 === peg$FAILED) { + s3 = peg$parsecbv_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_psalm(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb(); + if (s3 === peg$FAILED) { + s3 = peg$parsecb_ordinal(); + if (s3 === peg$FAILED) { + s3 = peg$parsec_title(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger_title(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv(); + if (s3 === peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 === peg$FAILED) { + s3 = peg$parsecv_weak(); + if (s3 === peg$FAILED) { + s3 = peg$parsec(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c6(s1, s3); + s0 = s1; + } 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$parseb() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 47) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s4 !== peg$FAILED) { + if (peg$c11.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + 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) { + s3 = null; + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 31) { + s4 = peg$c7; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + 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; + } + + return s0; + } + + function peg$parsebc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsec(); + if (s6 !== peg$FAILED) { + s7 = peg$parsecv_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsev(); + if (s8 !== peg$FAILED) { + s6 = [s6, s7, s8]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, s3); + s0 = s1; + } 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$parsebc_comma() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsec(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1, 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; + } + + return s0; + } + + function peg$parsebc_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebcv() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsev(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } 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) { + s3 = peg$currPos; + s4 = peg$parsesequence_sep(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + if (s5 !== peg$FAILED) { + s6 = peg$parsecv(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsecv_sep(); + if (s4 === peg$FAILED) { + s4 = peg$parsesequence_sep(); + } + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_explicit(); + 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) { + s3 = peg$parsecv_sep(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsev_letter(); + if (s4 === peg$FAILED) { + s4 = peg$parsev(); + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_comma() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsebc_comma(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + s7 = peg$currPos; + s8 = peg$parsecv_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsev(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsebcv_hyphen_range() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s2 = peg$c21; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s4 = peg$c21; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c21; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c23(s1, 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; + } + + return s0; + } + + function peg$parsebv() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseb(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parsecv_sep_weak(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsecv_sep_weak(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = []; + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parserange_sep(); + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + s3 = []; + s4 = peg$parsesequence_sep(); + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsesequence_sep(); + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parsev_explicit(); + peg$silentFails--; + if (s5 !== peg$FAILED) { + peg$currPos = s4; + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$parsesp(); + } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c24(s1, s3); + s0 = s1; + } 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$parsecb() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsein_book_of(); + if (s3 === peg$FAILED) { + s3 = null; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseb(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s2, 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; + } + + return s0; + } + + function peg$parsecb_range() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parserange_sep(); + if (s3 !== peg$FAILED) { + s4 = peg$parsec(); + if (s4 !== peg$FAILED) { + s5 = peg$parsein_book_of(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseb(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(s2, 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; + } + + return s0; + } + + function peg$parsecbv() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsecb_ordinal() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c27) { + s2 = peg$c27; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c29) { + s2 = peg$c29; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c31) { + s2 = peg$c31; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsec_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsein_book_of(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseb(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c25(s1, 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; + } + + return s0; + } + + function peg$parsecbv_ordinal() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsecb_ordinal(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s1, 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; + } + + return s0; + } + + function peg$parsec_psalm() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c33) { + s3 = peg$c33; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c35(s2); + s0 = s1; + } 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$parsecv_psalm() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsec_psalm(); + if (s1 !== peg$FAILED) { + s2 = peg$parsesequence_sep(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsev_explicit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsev(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c36(s1, 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; + } + + return s0; + } + + function peg$parsec_title() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$parsetitle(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c37(s2, s3); + s0 = s1; + } 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$parsecv() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsec(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s5 = peg$c18; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + 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; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsecv_sep(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsev_explicit(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 === peg$FAILED) { + s4 = peg$parsecv_sep(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsev_letter(); + if (s5 === peg$FAILED) { + s5 = peg$parsev(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s2, 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; + } + + return s0; + } + + function peg$parsecv_weak() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsec(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecv_sep_weak(); + if (s2 !== peg$FAILED) { + s3 = peg$parsev_letter(); + if (s3 === peg$FAILED) { + s3 = peg$parsev(); + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsecv_sep(); + if (s6 !== peg$FAILED) { + s7 = peg$parsev(); + if (s7 !== peg$FAILED) { + s6 = [s6, s7]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c38(s1, 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; + } + + return s0; + } + + function peg$parsec() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsec_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseff() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parsebcv(); + if (s1 === peg$FAILED) { + s1 = peg$parsebcv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parsebc(); + if (s1 === peg$FAILED) { + s1 = peg$parsebv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv(); + if (s1 === peg$FAILED) { + s1 = peg$parsecv_weak(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger(); + if (s1 === peg$FAILED) { + s1 = peg$parsec(); + if (s1 === peg$FAILED) { + s1 = peg$parsev(); + } + } + } + } + } + } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsesp(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c40) { + s3 = peg$c40; + peg$currPos += 2; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseabbrev(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s6 === peg$FAILED) { + s5 = void 0; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1); + 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; + } + + return s0; + } + + function peg$parseinteger_title() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseinteger(); + if (s1 !== peg$FAILED) { + s2 = peg$parsetitle(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c45(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsecontext() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c46) { + s3 = peg$c46; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c47); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c48(s2); + s0 = s1; + } 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$parseps151_b() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 31) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c49) { + s3 = peg$c49; + peg$currPos += 3; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s2); + s0 = s1; + } 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$parseps151_bc() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseps151_b(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c51) { + s2 = peg$c51; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c53.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s1); + s0 = s1; + } 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$parseps151_bcv() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseps151_bc(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1, s3); + s0 = s1; + } 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$parsev_letter() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 2) === peg$c40) { + s5 = peg$c40; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + if (peg$c57.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s7 === peg$FAILED) { + s6 = void 0; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + 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; + } + + return s0; + } + + function peg$parsev() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsev_explicit(); + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + s2 = peg$parseinteger(); + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsec_explicit() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c60) { + s2 = peg$c60; + peg$currPos += 7; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c62(); + s0 = s1; + } 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$parsev_explicit() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c63) { + s2 = peg$c63; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (peg$c42.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c65(); + 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; + } + + return s0; + } + + function peg$parsecv_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (input.charCodeAt(peg$currPos) === 58) { + s3 = peg$c66; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsecv_sep_weak() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c68.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c69); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = 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$parsespace(); + } + + return s0; + } + + function peg$parsesequence_sep() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = []; + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c72) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c74) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c76) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c78) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c70.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s2 === peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$currPos; + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s7 = peg$c18; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s9 = peg$c18; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s9 !== peg$FAILED) { + s6 = [s6, s7, s8, s9]; + s5 = s6; + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + } else { + peg$currPos = s5; + s5 = peg$FAILED; + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = void 0; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c72) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c74) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c76) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c77); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c78) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s2 === peg$FAILED) { + s2 = peg$parsespace(); + } + } + } + } + } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c80(); + } + s0 = s1; + + return s0; + } + + function peg$parserange_sep() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (peg$c81.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c83) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c85; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (peg$c81.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c82); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c83) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c84); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + 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) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 126) { + s4 = peg$c85; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c86); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + } + } + } 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$parsetitle() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parsecv_sep(); + if (s1 === peg$FAILED) { + s1 = peg$parsesequence_sep(); + } + if (s1 === peg$FAILED) { + s1 = null; + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 1).toLowerCase() === peg$c87) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c88); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c89(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsein_book_of() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c90) { + s2 = peg$c90; + peg$currPos += 4; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s2 = peg$c92; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c94) { + s2 = peg$c94; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c95); } + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c96) { + s5 = peg$c96; + peg$currPos += 3; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c97); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsesp(); + if (s6 !== peg$FAILED) { + if (input.substr(peg$currPos, 4) === peg$c98) { + s7 = peg$c98; + peg$currPos += 4; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c99); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parsesp(); + if (s8 !== peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c92) { + s9 = peg$c92; + peg$currPos += 2; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c93); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parsesp(); + if (s10 !== peg$FAILED) { + s5 = [s5, s6, s7, s8, s9, s10]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } 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 = null; + } + 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; + } + + return s0; + } + + function peg$parseabbrev() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s2 = peg$c18; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$currPos; + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s6 = peg$c18; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s6 !== peg$FAILED) { + s7 = peg$parsesp(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s8 = peg$c18; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s8 !== peg$FAILED) { + s5 = [s5, s6, s7, s8]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parseeu_cv_sep() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c15; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } 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$parsetranslation_sequence_enclosed() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + if (peg$c100.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsesp(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = peg$parsetranslation(); + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parsesequence_sep(); + if (s8 !== peg$FAILED) { + s9 = peg$parsetranslation(); + if (s9 !== peg$FAILED) { + s8 = [s8, s9]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesp(); + if (s5 !== peg$FAILED) { + if (peg$c102.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c103); } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(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; + } + + return s0; + } + + function peg$parsetranslation_sequence() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parsesp(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parsesp(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = peg$parsetranslation(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$currPos; + s7 = peg$parsesequence_sep(); + if (s7 !== peg$FAILED) { + s8 = peg$parsetranslation(); + if (s8 !== peg$FAILED) { + s7 = [s7, s8]; + s6 = s7; + } else { + peg$currPos = s6; + s6 = peg$FAILED; + } + } else { + peg$currPos = s6; + s6 = 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; + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c104(s3); + s0 = s1; + } 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$parsetranslation() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 30) { + s1 = peg$c105; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseany_integer(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 30) { + s3 = peg$c105; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c106); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c107(s2); + s0 = s1; + } 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$parseinteger() { + var res; + if (res = /^[0-9]{1,3}(?!\d|,000)/.exec(input.substr(peg$currPos))) { + peg$savedPos = peg$currPos; + peg$currPos += res[0].length; + return {"type": "integer", "value": parseInt(res[0], 10), "indices": [peg$savedPos, peg$currPos - 1]} + } else { + return peg$FAILED; + } + } + + function peg$parseany_integer() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c53.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c111.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c113(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseword_parenthesis() { + var s0, s1; + + s0 = peg$currPos; + if (peg$c100.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c114(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsesp() { + var s0; + + s0 = peg$parsespace(); + if (s0 === peg$FAILED) { + s0 = null; + } + + return s0; + } + + function peg$parsespace() { + var res; + if (res = /^[\s\xa0*]+/.exec(input.substr(peg$currPos))) { + peg$currPos += res[0].length; + return []; + } + return peg$FAILED; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +module.exports = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; diff --git a/src/zh/spec.ts b/src/zh/spec.ts index 7a6a904..0793d84 100644 --- a/src/zh/spec.ts +++ b/src/zh/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/zh"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/tools/template/spec.ts b/tools/template/spec.ts index e6f1f95..d66f9c7 100644 --- a/tools/template/spec.ts +++ b/tools/template/spec.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -import { bcv_parser } from "../../js/$LANG"; +import { bcv_parser } from "."; describe("Parsing", () => { let p: InstanceType; diff --git a/tsconfig.json b/tsconfig.json index 6e2e163..14ac097 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ /* Basic Options */ "target": "es5", "module": "commonjs", + "allowJs": true, "declaration": true, "outDir": "./js", "rootDir": "./src",