Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function parse(input) {
- var options = arguments.length > 1 ? arguments[1] : {},
- peg$FAILED = {},
- peg$startRuleFunctions = { start: peg$parsestart },
- peg$startRuleFunction = peg$parsestart,
- peg$c0 = [],
- peg$c1 = function(elements) {
- return {
- type : 'messageFormatPattern',
- elements: elements
- };
- },
- peg$c2 = peg$FAILED,
- peg$c3 = function(text) {
- var string = '',
- i, j, outerLen, inner, innerLen;
- for (i = 0, outerLen = text.length; i < outerLen; i += 1) {
- inner = text[i];
- for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {
- string += inner[j];
- }
- }
- return string;
- },
- peg$c4 = function(messageText) {
- return {
- type : 'messageTextElement',
- value: messageText
- };
- },
- peg$c5 = /^[^ \t\n\r,.+={}#]/,
- peg$c6 = { type: "class", value: "[^ \\t\\n\\r,.+={}#]", description: "[^ \\t\\n\\r,.+={}#]" },
- peg$c7 = "{",
- peg$c8 = { type: "literal", value: "{", description: "\"{\"" },
- peg$c9 = null,
- peg$c10 = ",",
- peg$c11 = { type: "literal", value: ",", description: "\",\"" },
- peg$c12 = "}",
- peg$c13 = { type: "literal", value: "}", description: "\"}\"" },
- peg$c14 = function(id, format) {
- return {
- type : 'argumentElement',
- id : id,
- format: format && format[2]
- };
- },
- peg$c15 = "number",
- peg$c16 = { type: "literal", value: "number", description: "\"number\"" },
- peg$c17 = "date",
- peg$c18 = { type: "literal", value: "date", description: "\"date\"" },
- peg$c19 = "time",
- peg$c20 = { type: "literal", value: "time", description: "\"time\"" },
- peg$c21 = function(type, style) {
- return {
- type : type + 'Format',
- style: style && style[2]
- };
- },
- peg$c22 = "plural",
- peg$c23 = { type: "literal", value: "plural", description: "\"plural\"" },
- peg$c24 = function(pluralStyle) {
- return {
- type : pluralStyle.type,
- ordinal: false,
- offset : pluralStyle.offset || 0,
- options: pluralStyle.options
- };
- },
- peg$c25 = "selectordinal",
- peg$c26 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" },
- peg$c27 = function(pluralStyle) {
- return {
- type : pluralStyle.type,
- ordinal: true,
- offset : pluralStyle.offset || 0,
- options: pluralStyle.options
- }
- },
- peg$c28 = "select",
- peg$c29 = { type: "literal", value: "select", description: "\"select\"" },
- peg$c30 = function(options) {
- return {
- type : 'selectFormat',
- options: options
- };
- },
- peg$c31 = "=",
- peg$c32 = { type: "literal", value: "=", description: "\"=\"" },
- peg$c33 = function(selector, pattern) {
- return {
- type : 'optionalFormatPattern',
- selector: selector,
- value : pattern
- };
- },
- peg$c34 = "offset:",
- peg$c35 = { type: "literal", value: "offset:", description: "\"offset:\"" },
- peg$c36 = function(number) {
- return number;
- },
- peg$c37 = function(offset, options) {
- return {
- type : 'pluralFormat',
- offset : offset,
- options: options
- };
- },
- peg$c38 = { type: "other", description: "whitespace" },
- peg$c39 = /^[ \t\n\r]/,
- peg$c40 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" },
- peg$c41 = { type: "other", description: "optionalWhitespace" },
- peg$c42 = /^[0-9]/,
- peg$c43 = { type: "class", value: "[0-9]", description: "[0-9]" },
- peg$c44 = /^[0-9a-f]/i,
- peg$c45 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" },
- peg$c46 = "0",
- peg$c47 = { type: "literal", value: "0", description: "\"0\"" },
- peg$c48 = /^[1-9]/,
- peg$c49 = { type: "class", value: "[1-9]", description: "[1-9]" },
- peg$c50 = function(digits) {
- return parseInt(digits, 10);
- },
- peg$c51 = /^[^{}\\\0-\x1F \t\n\r]/,
- peg$c52 = { type: "class", value: "[^{}\\\\\\0-\\x1F \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F \\t\\n\\r]" },
- peg$c53 = "\\#",
- peg$c54 = { type: "literal", value: "\\#", description: "\"\\\\#\"" },
- peg$c55 = function() { return '\\#'; },
- peg$c56 = "\\{",
- peg$c57 = { type: "literal", value: "\\{", description: "\"\\\\{\"" },
- peg$c58 = function() { return '\u007B'; },
- peg$c59 = "\\}",
- peg$c60 = { type: "literal", value: "\\}", description: "\"\\\\}\"" },
- peg$c61 = function() { return '\u007D'; },
- peg$c62 = "\\u",
- peg$c63 = { type: "literal", value: "\\u", description: "\"\\\\u\"" },
- peg$c64 = function(digits) {
- return String.fromCharCode(parseInt(digits, 16));
- },
- peg$c65 = function(chars) { return chars.join(''); },
- peg$currPos = 0,
- peg$reportedPos = 0,
- peg$cachedPos = 0,
- peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
- 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];
- }
- function text() {
- return input.substring(peg$reportedPos, peg$currPos);
- }
- function offset() {
- return peg$reportedPos;
- }
- function line() {
- return peg$computePosDetails(peg$reportedPos).line;
- }
- function column() {
- return peg$computePosDetails(peg$reportedPos).column;
- }
- function expected(description) {
- throw peg$buildException(
- null,
- [{ type: "other", description: description }],
- peg$reportedPos
- );
- }
- function error(message) {
- throw peg$buildException(message, null, peg$reportedPos);
- }
- function peg$computePosDetails(pos) {
- function advance(details, startPos, endPos) {
- var p, ch;
- for (p = startPos; p < endPos; p++) {
- ch = input.charAt(p);
- if (ch === "\n") {
- if (!details.seenCR) { details.line++; }
- details.column = 1;
- details.seenCR = false;
- } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
- details.line++;
- details.column = 1;
- details.seenCR = true;
- } else {
- details.column++;
- details.seenCR = false;
- }
- }
- }
- if (peg$cachedPos !== pos) {
- if (peg$cachedPos > pos) {
- peg$cachedPos = 0;
- peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
- }
- advance(peg$cachedPosDetails, peg$cachedPos, pos);
- peg$cachedPos = pos;
- }
- return peg$cachedPosDetails;
- }
- 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$buildException(message, expected, pos) {
- function cleanupExpected(expected) {
- var i = 1;
- expected.sort(function(a, b) {
- if (a.description < b.description) {
- return -1;
- } else if (a.description > b.description) {
- return 1;
- } else {
- return 0;
- }
- });
- while (i < expected.length) {
- if (expected[i - 1] === expected[i]) {
- expected.splice(i, 1);
- } else {
- i++;
- }
- }
- }
- function buildMessage(expected, found) {
- function stringEscape(s) {
- function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
- return s
- .replace(/\\/g, '\\\\')
- .replace(/"/g, '\\"')
- .replace(/\x08/g, '\\b')
- .replace(/\t/g, '\\t')
- .replace(/\n/g, '\\n')
- .replace(/\f/g, '\\f')
- .replace(/\r/g, '\\r')
- .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
- .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
- .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
- .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
- }
- var expectedDescs = new Array(expected.length),
- expectedDesc, foundDesc, i;
- for (i = 0; i < expected.length; i++) {
- expectedDescs[i] = expected[i].description;
- }
- expectedDesc = expected.length > 1
- ? expectedDescs.slice(0, -1).join(", ")
- + " or "
- + expectedDescs[expected.length - 1]
- : expectedDescs[0];
- foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
- return "Expected " + expectedDesc + " but " + foundDesc + " found.";
- }
- var posDetails = peg$computePosDetails(pos),
- found = pos < input.length ? input.charAt(pos) : null;
- if (expected !== null) {
- cleanupExpected(expected);
- }
- return new SyntaxError(
- message !== null ? message : buildMessage(expected, found),
- expected,
- found,
- pos,
- posDetails.line,
- posDetails.column
- );
- }
- function peg$parsestart() {
- var s0;
- s0 = peg$parsemessageFormatPattern();
- return s0;
- }
- function peg$parsemessageFormatPattern() {
- var s0, s1, s2;
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$parsemessageFormatElement();
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$parsemessageFormatElement();
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c1(s1);
- }
- s0 = s1;
- return s0;
- }
- function peg$parsemessageFormatElement() {
- var s0;
- s0 = peg$parsemessageTextElement();
- if (s0 === peg$FAILED) {
- s0 = peg$parseargumentElement();
- }
- return s0;
- }
- function peg$parsemessageText() {
- var s0, s1, s2, s3, s4, s5;
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$currPos;
- s3 = peg$parse_();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsechars();
- if (s4 !== peg$FAILED) {
- s5 = peg$parse_();
- if (s5 !== peg$FAILED) {
- s3 = [s3, s4, s5];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$currPos;
- s3 = peg$parse_();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsechars();
- if (s4 !== peg$FAILED) {
- s5 = peg$parse_();
- if (s5 !== peg$FAILED) {
- s3 = [s3, s4, s5];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- }
- } else {
- s1 = peg$c2;
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c3(s1);
- }
- s0 = s1;
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s1 = input.substring(s0, peg$currPos);
- }
- s0 = s1;
- }
- return s0;
- }
- function peg$parsemessageTextElement() {
- var s0, s1;
- s0 = peg$currPos;
- s1 = peg$parsemessageText();
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c4(s1);
- }
- s0 = s1;
- return s0;
- }
- function peg$parseargument() {
- var s0, s1, s2;
- s0 = peg$parsenumber();
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- s1 = [];
- if (peg$c5.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c6); }
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- if (peg$c5.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c6); }
- }
- }
- } else {
- s1 = peg$c2;
- }
- if (s1 !== peg$FAILED) {
- s1 = input.substring(s0, peg$currPos);
- }
- s0 = s1;
- }
- return s0;
- }
- function peg$parseargumentElement() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 123) {
- s1 = peg$c7;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c8); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseargument();
- if (s3 !== peg$FAILED) {
- s4 = peg$parse_();
- if (s4 !== peg$FAILED) {
- s5 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 44) {
- s6 = peg$c10;
- peg$currPos++;
- } else {
- s6 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$parse_();
- if (s7 !== peg$FAILED) {
- s8 = peg$parseelementFormat();
- if (s8 !== peg$FAILED) {
- s6 = [s6, s7, s8];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$c2;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$c2;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$c2;
- }
- if (s5 === peg$FAILED) {
- s5 = peg$c9;
- }
- if (s5 !== peg$FAILED) {
- s6 = peg$parse_();
- if (s6 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 125) {
- s7 = peg$c12;
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s7 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c14(s3, s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parseelementFormat() {
- var s0;
- s0 = peg$parsesimpleFormat();
- if (s0 === peg$FAILED) {
- s0 = peg$parsepluralFormat();
- if (s0 === peg$FAILED) {
- s0 = peg$parseselectOrdinalFormat();
- if (s0 === peg$FAILED) {
- s0 = peg$parseselectFormat();
- }
- }
- }
- return s0;
- }
- function peg$parsesimpleFormat() {
- var s0, s1, s2, s3, s4, s5, s6;
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 6) === peg$c15) {
- s1 = peg$c15;
- peg$currPos += 6;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c16); }
- }
- if (s1 === peg$FAILED) {
- if (input.substr(peg$currPos, 4) === peg$c17) {
- s1 = peg$c17;
- peg$currPos += 4;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c18); }
- }
- if (s1 === peg$FAILED) {
- if (input.substr(peg$currPos, 4) === peg$c19) {
- s1 = peg$c19;
- peg$currPos += 4;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c20); }
- }
- }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- s3 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 44) {
- s4 = peg$c10;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parse_();
- if (s5 !== peg$FAILED) {
- s6 = peg$parsechars();
- if (s6 !== peg$FAILED) {
- s4 = [s4, s5, s6];
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- if (s3 === peg$FAILED) {
- s3 = peg$c9;
- }
- if (s3 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c21(s1, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parsepluralFormat() {
- var s0, s1, s2, s3, s4, s5;
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 6) === peg$c22) {
- s1 = peg$c22;
- peg$currPos += 6;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c23); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 44) {
- s3 = peg$c10;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parse_();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsepluralStyle();
- if (s5 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c24(s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parseselectOrdinalFormat() {
- var s0, s1, s2, s3, s4, s5;
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 13) === peg$c25) {
- s1 = peg$c25;
- peg$currPos += 13;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c26); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 44) {
- s3 = peg$c10;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parse_();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsepluralStyle();
- if (s5 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c27(s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parseselectFormat() {
- var s0, s1, s2, s3, s4, s5, s6;
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 6) === peg$c28) {
- s1 = peg$c28;
- peg$currPos += 6;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c29); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 44) {
- s3 = peg$c10;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parse_();
- if (s4 !== peg$FAILED) {
- s5 = [];
- s6 = peg$parseoptionalFormatPattern();
- if (s6 !== peg$FAILED) {
- while (s6 !== peg$FAILED) {
- s5.push(s6);
- s6 = peg$parseoptionalFormatPattern();
- }
- } else {
- s5 = peg$c2;
- }
- if (s5 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c30(s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parseselector() {
- var s0, s1, s2, s3;
- s0 = peg$currPos;
- s1 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 61) {
- s2 = peg$c31;
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c32); }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsenumber();
- if (s3 !== peg$FAILED) {
- s2 = [s2, s3];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$c2;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$c2;
- }
- if (s1 !== peg$FAILED) {
- s1 = input.substring(s0, peg$currPos);
- }
- s0 = s1;
- if (s0 === peg$FAILED) {
- s0 = peg$parsechars();
- }
- return s0;
- }
- function peg$parseoptionalFormatPattern() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
- s0 = peg$currPos;
- s1 = peg$parse_();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseselector();
- if (s2 !== peg$FAILED) {
- s3 = peg$parse_();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 123) {
- s4 = peg$c7;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c8); }
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parse_();
- if (s5 !== peg$FAILED) {
- s6 = peg$parsemessageFormatPattern();
- if (s6 !== peg$FAILED) {
- s7 = peg$parse_();
- if (s7 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 125) {
- s8 = peg$c12;
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s8 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c33(s2, s6);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parseoffset() {
- var s0, s1, s2, s3;
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 7) === peg$c34) {
- s1 = peg$c34;
- peg$currPos += 7;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c35); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- s3 = peg$parsenumber();
- if (s3 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c36(s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parsepluralStyle() {
- var s0, s1, s2, s3, s4;
- s0 = peg$currPos;
- s1 = peg$parseoffset();
- if (s1 === peg$FAILED) {
- s1 = peg$c9;
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse_();
- if (s2 !== peg$FAILED) {
- s3 = [];
- s4 = peg$parseoptionalFormatPattern();
- if (s4 !== peg$FAILED) {
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- s4 = peg$parseoptionalFormatPattern();
- }
- } else {
- s3 = peg$c2;
- }
- if (s3 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c37(s1, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- return s0;
- }
- function peg$parsews() {
- var s0, s1;
- peg$silentFails++;
- s0 = [];
- if (peg$c39.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c40); }
- }
- if (s1 !== peg$FAILED) {
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- if (peg$c39.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c40); }
- }
- }
- } else {
- s0 = peg$c2;
- }
- peg$silentFails--;
- if (s0 === peg$FAILED) {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c38); }
- }
- return s0;
- }
- function peg$parse_() {
- var s0, s1, s2;
- peg$silentFails++;
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$parsews();
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$parsews();
- }
- if (s1 !== peg$FAILED) {
- s1 = input.substring(s0, peg$currPos);
- }
- s0 = s1;
- peg$silentFails--;
- if (s0 === peg$FAILED) {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c41); }
- }
- return s0;
- }
- function peg$parsedigit() {
- var s0;
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s0 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s0 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- return s0;
- }
- function peg$parsehexDigit() {
- var s0;
- if (peg$c44.test(input.charAt(peg$currPos))) {
- s0 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s0 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c45); }
- }
- return s0;
- }
- function peg$parsenumber() {
- var s0, s1, s2, s3, s4, s5;
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 48) {
- s1 = peg$c46;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c47); }
- }
- if (s1 === peg$FAILED) {
- s1 = peg$currPos;
- s2 = peg$currPos;
- if (peg$c48.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c49); }
- }
- if (s3 !== peg$FAILED) {
- s4 = [];
- s5 = peg$parsedigit();
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- s5 = peg$parsedigit();
- }
- if (s4 !== peg$FAILED) {
- s3 = [s3, s4];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$c2;
- }
- if (s2 !== peg$FAILED) {
- s2 = input.substring(s1, peg$currPos);
- }
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c50(s1);
- }
- s0 = s1;
- return s0;
- }
- function peg$parsechar() {
- var s0, s1, s2, s3, s4, s5, s6, s7;
- if (peg$c51.test(input.charAt(peg$currPos))) {
- s0 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s0 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c52); }
- }
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c53) {
- s1 = peg$c53;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c54); }
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c55();
- }
- s0 = s1;
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c56) {
- s1 = peg$c56;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c57); }
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c58();
- }
- s0 = s1;
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c59) {
- s1 = peg$c59;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c60); }
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c61();
- }
- s0 = s1;
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c62) {
- s1 = peg$c62;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c63); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$currPos;
- s3 = peg$currPos;
- s4 = peg$parsehexDigit();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsehexDigit();
- if (s5 !== peg$FAILED) {
- s6 = peg$parsehexDigit();
- if (s6 !== peg$FAILED) {
- s7 = peg$parsehexDigit();
- if (s7 !== peg$FAILED) {
- s4 = [s4, s5, s6, s7];
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$c2;
- }
- if (s3 !== peg$FAILED) {
- s3 = input.substring(s2, peg$currPos);
- }
- s2 = s3;
- if (s2 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c64(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$c2;
- }
- }
- }
- }
- }
- return s0;
- }
- function peg$parsechars() {
- var s0, s1, s2;
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$parsechar();
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$parsechar();
- }
- } else {
- s1 = peg$c2;
- }
- if (s1 !== peg$FAILED) {
- peg$reportedPos = s0;
- s1 = peg$c65(s1);
- }
- s0 = s1;
- return s0;
- }
- 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({ type: "end", description: "end of input" });
- }
- throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement