UNPKG

mathoid-texvcjs

Version:

A TeX/LaTeX validator for MediaWiki.

1,684 lines (1,483 loc) 296 kB
// Generated by Peggy 3.0.2. // // https://peggyjs.org/ "use strict"; function peg$subclass(child, parent) { function C() { this.constructor = child; } C.prototype = parent.prototype; child.prototype = new C(); } function peg$SyntaxError(message, expected, found, location) { var self = Error.call(this, message); // istanbul ignore next Check is a necessary evil to support older environments if (Object.setPrototypeOf) { Object.setPrototypeOf(self, peg$SyntaxError.prototype); } self.expected = expected; self.found = found; self.location = location; self.name = "SyntaxError"; return self; } peg$subclass(peg$SyntaxError, Error); function peg$padEnd(str, targetLength, padString) { padString = padString || " "; if (str.length > targetLength) { return str; } targetLength -= str.length; padString += padString.repeat(targetLength); return str + padString.slice(0, targetLength); } peg$SyntaxError.prototype.format = function(sources) { var str = "Error: " + this.message; if (this.location) { var src = null; var k; for (k = 0; k < sources.length; k++) { if (sources[k].source === this.location.source) { src = sources[k].text.split(/\r\n|\n|\r/g); break; } } var s = this.location.start; var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) ? this.location.source.offset(s) : s; var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; if (src) { var e = this.location.end; var filler = peg$padEnd("", offset_s.line.toString().length, ' '); var line = src[s.line - 1]; var last = s.line === e.line ? e.column : line.length + 1; var hatLen = (last - s.column) || 1; str += "\n --> " + loc + "\n" + filler + " |\n" + offset_s.line + " | " + line + "\n" + filler + " | " + peg$padEnd("", s.column - 1, ' ') + peg$padEnd("", hatLen, "^"); } else { str += "\n at " + loc; } } return str; }; peg$SyntaxError.buildMessage = function(expected, found) { var DESCRIBE_EXPECTATION_FNS = { literal: function(expectation) { return "\"" + literalEscape(expectation.text) + "\""; }, class: function(expectation) { var escapedParts = expectation.parts.map(function(part) { return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part); }); return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; }, any: function() { return "any character"; }, end: function() { 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 = expected.map(describeExpectation); var i, j; 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 !== undefined ? options : {}; var peg$FAILED = {}; var peg$source = options.grammarSource; var peg$startRuleFunctions = { start: peg$parsestart }; var peg$startRuleFunction = peg$parsestart; var peg$c0 = "t"; var peg$c1 = "e"; var peg$c2 = "e1"; var peg$c3 = "name"; var peg$c4 = "e2"; var peg$c5 = "h"; var peg$c6 = "d"; var peg$c7 = "l1"; var peg$c8 = "l2"; var peg$c9 = "base"; var peg$c10 = "upi"; var peg$c11 = "downi"; var peg$c12 = "l"; var peg$c13 = "r"; var peg$c14 = "f"; var peg$c15 = "("; var peg$c16 = "["; var peg$c17 = "\\{"; var peg$c18 = "c"; var peg$c19 = "b"; var peg$c20 = "m"; var peg$c21 = "\\begin{"; var peg$c22 = "}"; var peg$c23 = "cs"; var peg$c24 = "as"; var peg$c25 = "tail"; var peg$c26 = "p"; var peg$c27 = "*"; var peg$c28 = "||"; var peg$c29 = "|"; var peg$c30 = "@"; var peg$c31 = "num"; var peg$c32 = "]"; var peg$c33 = " "; var peg$c34 = "s"; var peg$c35 = "(^)"; var peg$c36 = "n"; var peg$c37 = "^"; var peg$c38 = "o"; var peg$c39 = "a"; var peg$c40 = "_"; var peg$c41 = "{"; var peg$c42 = "-"; var peg$c43 = "mathrm"; var peg$c44 = "mbox"; var peg$c45 = "\\"; var peg$c46 = "&"; var peg$c47 = "\\\\"; var peg$c48 = "\\begin"; var peg$c49 = "\\end"; var peg$c50 = "{matrix}"; var peg$c51 = "{pmatrix}"; var peg$c52 = "{bmatrix}"; var peg$c53 = "{Bmatrix}"; var peg$c54 = "{vmatrix}"; var peg$c55 = "{Vmatrix}"; var peg$c56 = "{array}"; var peg$c57 = "{align}"; var peg$c58 = "{aligned}"; var peg$c59 = "{alignat}"; var peg$c60 = "{alignedat}"; var peg$c61 = "{smallmatrix}"; var peg$c62 = "{cases}"; var peg$c63 = "named"; var peg$c64 = "gray"; var peg$c65 = "rgb"; var peg$c66 = "RGB"; var peg$c67 = "cmyk"; var peg$c68 = "k"; var peg$c69 = ","; var peg$c70 = "g"; var peg$c71 = "y"; var peg$c72 = "0"; var peg$c73 = "."; var peg$c74 = "="; var peg$c75 = "#"; var peg$c76 = "~--"; var peg$c77 = "~-"; var peg$c78 = "~="; var peg$c79 = "~"; var peg$c80 = "-~-"; var peg$c81 = "...."; var peg$c82 = "..."; var peg$c83 = "<-"; var peg$c84 = "->"; var peg$c85 = "1"; var peg$c86 = "2"; var peg$c87 = "3"; var peg$c88 = "{math}"; var peg$c89 = "\\}"; var peg$r0 = /^[ \t\n\r]/; var peg$r1 = /^[lrc]/; var peg$r2 = /^[0-9]/; var peg$r3 = /^[tcb]/; var peg$r4 = /^[a-zA-Z]/; var peg$r5 = /^[,:;?!']/; var peg$r6 = /^[().]/; var peg$r7 = /^[\-+*=]/; var peg$r8 = /^[\/|]/; var peg$r9 = /^[\-0-9a-zA-Z+*,=():\/;?.!'` [\]\x80-\uD7FF\uE000-\uFFFF]/; var peg$r10 = /^[\uD800-\uDBFF]/; var peg$r11 = /^[\uDC00-\uDFFF]/; var peg$r12 = /^[, ;!_#%$&]/; var peg$r13 = /^[><~]/; var peg$r14 = /^[%$]/; var peg$r15 = /^[{}|]/; var peg$r16 = /^[1-9]/; var peg$r17 = /^[01]/; var peg$r18 = /^[+-.*']/; var peg$r19 = /^[+-=#().,;\/*<>|@&'[\]]/; var peg$e0 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); var peg$e1 = peg$literalExpectation("(", false); var peg$e2 = peg$literalExpectation("[", false); var peg$e3 = peg$literalExpectation("\\{", false); var peg$e4 = peg$literalExpectation("\\begin{", false); var peg$e5 = peg$literalExpectation("}", false); var peg$e6 = peg$classExpectation(["l", "r", "c"], false, false); var peg$e7 = peg$literalExpectation("p", false); var peg$e8 = peg$literalExpectation("*", false); var peg$e9 = peg$classExpectation([["0", "9"]], false, false); var peg$e10 = peg$literalExpectation("||", false); var peg$e11 = peg$literalExpectation("|", false); var peg$e12 = peg$literalExpectation("@", false); var peg$e13 = peg$classExpectation(["t", "c", "b"], false, false); var peg$e14 = peg$literalExpectation("]", false); var peg$e15 = peg$literalExpectation(" ", false); var peg$e16 = peg$literalExpectation("(^)", false); var peg$e17 = peg$literalExpectation("^", false); var peg$e18 = peg$literalExpectation("_", false); var peg$e19 = peg$literalExpectation("{", false); var peg$e20 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false); var peg$e21 = peg$classExpectation([",", ":", ";", "?", "!", "'"], false, false); var peg$e22 = peg$classExpectation(["(", ")", "."], false, false); var peg$e23 = peg$classExpectation(["-", "+", "*", "="], false, false); var peg$e24 = peg$classExpectation(["/", "|"], false, false); var peg$e25 = peg$otherExpectation("valid UTF-16 sequences"); var peg$e26 = peg$classExpectation(["-", ["0", "9"], ["a", "z"], ["A", "Z"], "+", "*", ",", "=", "(", ")", ":", "/", ";", "?", ".", "!", "'", "`", " ", "[", "]", ["\x80", "\uD7FF"], ["\uE000", "\uFFFF"]], false, false); var peg$e27 = peg$classExpectation([["\uD800", "\uDBFF"]], false, false); var peg$e28 = peg$classExpectation([["\uDC00", "\uDFFF"]], false, false); var peg$e29 = peg$literalExpectation("-", false); var peg$e30 = peg$literalExpectation("\\", false); var peg$e31 = peg$classExpectation([",", " ", ";", "!", "_", "#", "%", "$", "&"], false, false); var peg$e32 = peg$classExpectation([">", "<", "~"], false, false); var peg$e33 = peg$classExpectation(["%", "$"], false, false); var peg$e34 = peg$classExpectation(["{", "}", "|"], false, false); var peg$e35 = peg$literalExpectation("&", false); var peg$e36 = peg$literalExpectation("\\\\", false); var peg$e37 = peg$literalExpectation("\\begin", false); var peg$e38 = peg$literalExpectation("\\end", false); var peg$e39 = peg$literalExpectation("{matrix}", false); var peg$e40 = peg$literalExpectation("{pmatrix}", false); var peg$e41 = peg$literalExpectation("{bmatrix}", false); var peg$e42 = peg$literalExpectation("{Bmatrix}", false); var peg$e43 = peg$literalExpectation("{vmatrix}", false); var peg$e44 = peg$literalExpectation("{Vmatrix}", false); var peg$e45 = peg$literalExpectation("{array}", false); var peg$e46 = peg$literalExpectation("{align}", false); var peg$e47 = peg$literalExpectation("{aligned}", false); var peg$e48 = peg$literalExpectation("{alignat}", false); var peg$e49 = peg$literalExpectation("{alignedat}", false); var peg$e50 = peg$literalExpectation("{smallmatrix}", false); var peg$e51 = peg$literalExpectation("{cases}", false); var peg$e52 = peg$literalExpectation("named", true); var peg$e53 = peg$literalExpectation("gray", true); var peg$e54 = peg$literalExpectation("rgb", false); var peg$e55 = peg$literalExpectation("RGB", false); var peg$e56 = peg$literalExpectation("cmyk", true); var peg$e57 = peg$literalExpectation(",", false); var peg$e58 = peg$literalExpectation("0", false); var peg$e59 = peg$classExpectation([["1", "9"]], false, false); var peg$e60 = peg$literalExpectation(".", false); var peg$e61 = peg$classExpectation(["0", "1"], false, false); var peg$e62 = peg$classExpectation([["+", "."], "*", "'"], false, false); var peg$e63 = peg$literalExpectation("=", false); var peg$e64 = peg$literalExpectation("#", false); var peg$e65 = peg$literalExpectation("~--", false); var peg$e66 = peg$literalExpectation("~-", false); var peg$e67 = peg$literalExpectation("~=", false); var peg$e68 = peg$literalExpectation("~", false); var peg$e69 = peg$literalExpectation("-~-", false); var peg$e70 = peg$literalExpectation("....", false); var peg$e71 = peg$literalExpectation("...", false); var peg$e72 = peg$literalExpectation("<-", false); var peg$e73 = peg$literalExpectation("->", false); var peg$e74 = peg$literalExpectation("1", false); var peg$e75 = peg$literalExpectation("2", false); var peg$e76 = peg$literalExpectation("3", false); var peg$e77 = peg$literalExpectation("{math}", false); var peg$e78 = peg$literalExpectation("\\}", false); var peg$e79 = peg$classExpectation([["+", "="], "#", "(", ")", ".", ",", ";", "/", "*", "<", ">", "|", "@", "&", "'", "[", "]"], false, false); var peg$f0 = function(t) { assert.ok(t instanceof TexArray); return lst2arr(t); }; var peg$f1 = function(e) { return e; }; var peg$f2 = function(e1, name, e2) { return new TexArray(new Infix(name, lst2arr(e1), lst2arr(e2))); }; var peg$f3 = function() { return new TexArray(); }; var peg$f4 = function(h, t) { return new TexArray(h, t); }; var peg$f5 = function(h, t) { return new TexArray(h, t); }; var peg$f6 = function(d, e) { return new TexArray(new Declh(d.fname, lst2arr(e))); }; var peg$f7 = function(l1, l2) { return new Fq(l1.base, l1.down, l2); }; var peg$f8 = function(l1, l2) { return new Fq(l1.base, l2, l1.up); }; var peg$f9 = function(base, upi) { return new Uq(base, upi); }; var peg$f10 = function(base, downi) { return new Dq(base, downi); }; var peg$f11 = function() { return new Literal( "]"); }; var peg$f12 = function(l, e) { return new TexArray(l, e); }; var peg$f13 = function() { return new TexArray(); }; var peg$f14 = function(l1, l2) { return new Fq(l1.base, l1.down, l2); }; var peg$f15 = function(l1, l2) { return new Fq (l1.base, l2, l1.up); }; var peg$f16 = function(l1, l2) { return new Fq(new TexArray(), l1.down, l2); }; var peg$f17 = function(base, upi) { return new Uq(base, upi); }; var peg$f18 = function(base, downi) { return new Dq(base, downi); }; var peg$f19 = function(l) { return new Uq( new TexArray(),l); }; var peg$f20 = function(l) { return new Dq(new TexArray(),l); }; var peg$f21 = function(d) { return d; }; var peg$f22 = function() { return "]"; }; var peg$f23 = function(d) { return d; }; var peg$f24 = function() { return "]"; }; var peg$f25 = function(r) { return new Literal(r); }; var peg$f26 = function(f) { return tu.latex_function_names[f]; }; var peg$f27 = function(f) { return " ";}; var peg$f28 = function(f, c) { return new TexArray( new Literal(f) , new Literal( c ) ) ; }; var peg$f29 = function(f) { return tu.nullary_macro_aliase[f]; }; var peg$f30 = function(f) { var ast = peg$parse(tu.nullary_macro_aliase[f]); assert.ok(ast instanceof TexArray && ast.length === 1); return ast.first(); }; var peg$f31 = function(f) { return tu.deprecated_nullary_macro_aliase[f]; }; var peg$f32 = function(f) { var ast = peg$parse(tu.deprecated_nullary_macro_aliase[f]); assert.ok(ast instanceof TexArray && ast.length === 1); if (options.oldtexvc){ return ast.first(); } else { throw new peg$SyntaxError("Deprecation: Alias no longer supported.", [], text(), location()); } }; var peg$f33 = function(r) { return new Literal(r); }; var peg$f34 = function(b, r) { return new Big(b, r); }; var peg$f35 = function(b) { return new Big(b, "]"); }; var peg$f36 = function(l, e, r) {return new Lr(l, r, lst2arr(e)); }; var peg$f37 = function(name, e, l) { return new Fun2sq(name, new Curly(lst2arr(e)), l); }; var peg$f38 = function(name, l) { return new Fun1(name, l); }; var peg$f39 = function(name, l) {return new Fun1nb(name, l); }; var peg$f40 = function(name, l) { return new Mhchem(name, l); }; var peg$f41 = function(name, l1, l2) { return new Fun2(name, l1, l2); }; var peg$f42 = function(name, l1, l2) { return new Fun2nb(name, l1, l2); }; var peg$f43 = function(e) { return new Curly(lst2arr(e)); }; var peg$f44 = function(e1, name, e2) { return new Infix(name, lst2arr(e1), lst2arr(e2)); }; var peg$f45 = function(m) { return new Matrix("matrix", lst2arr(m)); }; var peg$f46 = function(m) { return new Matrix("pmatrix", lst2arr(m)); }; var peg$f47 = function(m) { return new Matrix("bmatrix", lst2arr(m)); }; var peg$f48 = function(m) { return new Matrix("Bmatrix", lst2arr(m)); }; var peg$f49 = function(m) { return new Matrix("vmatrix", lst2arr(m)); }; var peg$f50 = function(m) { return new Matrix("Vmatrix", lst2arr(m)); }; var peg$f51 = function(m) { return new Matrix("array", lst2arr(m)); }; var peg$f52 = function(m) { return new Matrix("aligned", lst2arr(m)); }; var peg$f53 = function(m) { return new Matrix("aligned", lst2arr(m)); }; var peg$f54 = function(m) { return new Matrix("alignedat", lst2arr(m)); }; var peg$f55 = function(m) { return new Matrix("alignedat", lst2arr(m)); }; var peg$f56 = function(m) { return new Matrix("smallmatrix", lst2arr(m)); }; var peg$f57 = function(m) { return new Matrix("cases", lst2arr(m)); }; var peg$f58 = function() { throw new peg$SyntaxError("Illegal TeX function", [], text(), location()); }; var peg$f59 = function(f) { return !tu.all_functions[f]; }; var peg$f60 = function(f) { throw new peg$SyntaxError("Illegal TeX function", [], f, location()); }; var peg$f61 = function(cs, m) { if (m.length ) { m.first().first().unshift(cs); return m; } return new TexArray(new TexArray(cs)); }; var peg$f62 = function(as, m) { m.first().first().unshift(as); return m; }; var peg$f63 = function(l, m) { return m; }; var peg$f64 = function(l, tail) { return new TexArray( lst2arr(l), tail ); }; var peg$f65 = function(f, l) { if (typeof l.first() === 'undefined' ) { l.push(new TexArray()) } l.first().unshift(new Literal(f + " ")); return l;}; var peg$f66 = function(e, l) { return l; }; var peg$f67 = function(e, tail) { return new TexArray(e, tail); }; var peg$f68 = function() { return text(); }; var peg$f69 = function(cs) { return new Curly(new TexArray(new Literal(cs))); }; var peg$f70 = function() { return text(); }; var peg$f71 = function(num) { return new Curly(new TexArray(new Literal(num))); }; var peg$f72 = function(e) { return new Curly(lst2arr(e)); }; var peg$f73 = function(p, s) { return new TexArray(p,new TexArray(new Literal(" "),s)); }; var peg$f74 = function(p) { return new TexArray(p,new TexArray()); }; var peg$f75 = function(m) { return new Literal(m); }; var peg$f76 = function(m, n) { return new ChemWord(m, new Literal(n)); }; var peg$f77 = function(m) { return m; }; var peg$f78 = function(m) { return new Literal(m); }; var peg$f79 = function(m) { return new Literal(m); }; var peg$f80 = function(m, n) { return new ChemWord(m, n); }; var peg$f81 = function(m, n, o) { return new ChemWord(new ChemWord(new Literal(m), n), o); }; var peg$f82 = function(m) { return m; }; var peg$f83 = function() { return new Literal(""); }; var peg$f84 = function(m) { return m;}; var peg$f85 = function(c) { return new Literal(c) }; var peg$f86 = function(m) { return m;}; var peg$f87 = function(c) { return new Curly(new TexArray(c)); }; var peg$f88 = function(c) { return new Dollar(lst2arr(c)); }; var peg$f89 = function(name, l) { return new Fun1(name, l); }; var peg$f90 = function(m) { return m; }; var peg$f91 = function(c) { return new Literal(c) }; var peg$f92 = function(e) { return new Curly(new TexArray(new Literal(e))); }; var peg$f93 = function(a, b) { return new ChemWord(new Literal(a), new Literal(b)); }; var peg$f94 = function(a, b) { return new ChemWord(new Literal(a), b); }; var peg$f95 = function(a, b) { return new ChemWord(new Literal(a), new Dollar(lst2arr(b))); }; var peg$f96 = function(name, l1, l2) { return new ChemFun2u(name, l1, l2); }; var peg$f97 = function(name, l1, l2) { return new Fun2(name, l1, l2); }; var peg$f98 = function(name, l1, l2) { return new Fun2(name, l1, l2); }; var peg$f99 = function(name, l) { return new Fun1(name, l); }; var peg$f100 = function(cs) { return new Literal(cs.join('')); }; var peg$f101 = function(name) { return new Literal(name.join('')); }; var peg$f102 = function(l, h) { return text(); }; var peg$f103 = function(b) { return tu.box_functions[b]; }; var peg$f104 = function(b, cs) { return new Box(b, cs.join('')); }; var peg$f105 = function(c) { return c; }; var peg$f106 = function(f) { return tu.mediawiki_function_names[f]; }; var peg$f107 = function(f) { return " ";}; var peg$f108 = function(f, c) { return "\\operatorname {" + f.slice(1) + "}" + c; }; var peg$f109 = function(f) { return tu.nullary_macro[f]; }; var peg$f110 = function(f) { return f + " "; }; var peg$f111 = function(f) { return options.usemathrm && tu.nullary_macro_in_mbox[f]; }; var peg$f112 = function(f) { return "\\mathrm {" + f + "} "; }; var peg$f113 = function(mathrm) { return options.usemathrm && mathrm === "\\mathrm"; }; var peg$f114 = function(mathrm, f) { return options.usemathrm && tu.nullary_macro_in_mbox[f]; }; var peg$f115 = function(mathrm, f) { return options.usemathrm && "\\mathrm {" + f + "} "; }; var peg$f116 = function(f) { return tu.nullary_macro_in_mbox[f]; }; var peg$f117 = function(f) { return "\\mbox{" + f + "} "; }; var peg$f118 = function(mbox) { return mbox === "\\mbox"; }; var peg$f119 = function(mbox, f) { return tu.nullary_macro_in_mbox[f]; }; var peg$f120 = function(mbox, f) { return "\\mbox{" + f + "} "; }; var peg$f121 = function(f) { return f; }; var peg$f122 = function(c) { return "\\" + c; }; var peg$f123 = function(c) { return c; }; var peg$f124 = function(c) { if(options.oldtexvc) { return "\\" + c; /* escape dangerous chars */ } else { throw new peg$SyntaxError("Deprecation: % and $ need to be escaped.", [], text(), location()); }}; var peg$f125 = function(c) { return c; }; var peg$f126 = function(c) { return "\\" + c; }; var peg$f127 = function(f) { return tu.other_delimiters1[f]; }; var peg$f128 = function(f) { return f + " "; }; var peg$f129 = function(f) { return tu.other_delimiters2[f]; }; var peg$f130 = function(f) { var p = peg$parse(tu.other_delimiters2[f]); assert.ok(p instanceof TexArray && p.length === 1); assert.ok(p.first() instanceof Literal); return p.first().arg; }; var peg$f131 = function(f) { return tu.fun_ar1nb[f]; }; var peg$f132 = function(f) { return f; }; var peg$f133 = function(f) { return tu.fun_ar1opt[f]; }; var peg$f134 = function(f) { return f; }; var peg$f135 = function() { return text(); }; var peg$f136 = function(f) { return tu.big_literals[f]; }; var peg$f137 = function(f) { return f; }; var peg$f138 = function(f) { return tu.fun_ar1[f]; }; var peg$f139 = function(f) { return f; }; var peg$f140 = function(f) { return options.oldmhchem && tu.fun_mhchem[f]}; var peg$f141 = function(f) { return f; }; var peg$f142 = function(f) { return tu.other_fun_ar1[f]; }; var peg$f143 = function(f) { if (options.oldtexvc) { return tu.other_fun_ar1[f]; } else { throw new peg$SyntaxError("Deprecation: \\Bbb and \\bold are not allowed in math mode.", [], text(), location()); }}; var peg$f144 = function(f) { return tu.fun_mhchem[f]; }; var peg$f145 = function(f) { return f; }; var peg$f146 = function(f) { return tu.fun_ar2[f]; }; var peg$f147 = function(f) { return f; }; var peg$f148 = function(f) { return tu.fun_infix[f]; }; var peg$f149 = function(f) { return f; }; var peg$f150 = function(f) { return tu.declh_function[f]; }; var peg$f151 = function(f) { return new Declh(f, new TexArray()); }; var peg$f152 = function(f) { return tu.fun_ar2nb[f]; }; var peg$f153 = function(f) { return f; }; var peg$f154 = function(f) { return tu.left_function[f]; }; var peg$f155 = function(f) { return tu.right_function[f]; }; var peg$f156 = function(f) { return tu.hline_function[f]; }; var peg$f157 = function(f) { return f; }; var peg$f158 = function(f) { return tu.color_function[f]; }; var peg$f159 = function(f, cs) { return f + " " + cs; }; var peg$f160 = function(f) { return tu.definecolor_function[f]; }; var peg$f161 = function(f, name, cs) { return "{named}" + cs; }; var peg$f162 = function(f, name, cs) { return "{gray}" + cs; }; var peg$f163 = function(f, name, cs) { return "{rgb}" + cs; }; var peg$f164 = function(f, name, cs) { return "{rgb}" + cs; }; var peg$f165 = function(f, name, cs) { return "{cmyk}" + cs; }; var peg$f166 = function(f, name, a) { return f + " {" + name.join('') + "}" + a; }; var peg$f167 = function(cs) { return "[named]" + cs; }; var peg$f168 = function(cs) { return "[gray]" + cs; }; var peg$f169 = function(cs) { return "[rgb]" + cs; }; var peg$f170 = function(cs) { return "[rgb]" + cs; }; var peg$f171 = function(cs) { return "[cmyk]" + cs; }; var peg$f172 = function(name) { return "{" + name.join('') + "}"; }; var peg$f173 = function(k) { return "{"+k+"}"; }; var peg$f174 = function(r, g, b) { return "{"+r+","+g+","+b+"}"; }; var peg$f175 = function(r, g, b) { return "{"+r+","+g+","+b+"}"; }; var peg$f176 = function(c, m, y, k) { return "{"+c+","+m+","+y+","+k+"}"; }; var peg$f177 = function(n) { return parseInt(n, 10) <= 255; }; var peg$f178 = function(n) { return n / 255; }; var peg$f179 = function(n) { return n; }; var peg$f180 = function(n) { return n; }; var peg$f181 = function(f) { return tu.mhchem_single_macro[f]; }; var peg$f182 = function(f) { return f; }; var peg$f183 = function(c) { return "\\" + c; }; var peg$f184 = function(f) { return tu.mhchem_bond[f]; }; var peg$f185 = function(f) { return f; }; var peg$f186 = function(f) { return tu.mhchem_macro_1p[f]; }; var peg$f187 = function(f) { return f; }; var peg$f188 = function(f) { return tu.mhchem_macro_2p[f]; }; var peg$f189 = function(f) { return f; }; var peg$f190 = function(f) { return tu.mhchem_macro_2pu[f]; }; var peg$f191 = function(f) { return f; }; var peg$f192 = function(f) { return tu.mhchem_macro_2pc[f]; }; var peg$f193 = function(f) { return f; }; var peg$f194 = function(c) { return c; }; var peg$f195 = function(c) { return c; }; var peg$f196 = function(c) { return c; }; var peg$f197 = function(c) { return c; }; var peg$f198 = function(c) { return c; }; var peg$f199 = function() { return "{}"; }; var peg$f200 = function() { return false; }; var peg$f201 = function() { return peg$currPos === input.length; }; var peg$currPos = 0; var peg$savedPos = 0; var peg$posDetailsCache = [{ line: 1, column: 1 }]; var peg$maxFailPos = 0; var peg$maxFailExpected = []; var peg$silentFails = 0; var peg$resultsCache = {}; var 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$savedPos, peg$currPos); } function offset() { return peg$savedPos; } function range() { return { source: peg$source, start: peg$savedPos, end: peg$currPos }; } function location() { return peg$computeLocation(peg$savedPos, peg$currPos); } function expected(description, location) { location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos); throw peg$buildStructuredError( [peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location ); } function error(message, location) { location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos); throw peg$buildSimpleError(message, location); } function peg$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]; var 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, offset) { var startPosDetails = peg$computePosDetails(startPos); var endPosDetails = peg$computePosDetails(endPos); var res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, column: endPosDetails.column } }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); res.end = peg$source.offset(res.end); } return res; } function peg$fail(expected) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected); } function peg$buildSimpleError(message, location) { return new peg$SyntaxError(message, null, null, location); } function peg$buildStructuredError(expected, found, location) { return new peg$SyntaxError( peg$SyntaxError.buildMessage(expected, found), expected, found, location ); } function peg$parsestart() { var s0, s1, s2; var key = peg$currPos * 125 + 0; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parse_(); s2 = peg$parsetex_expr(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f0(s2); } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parse_() { var s0, s1; var key = peg$currPos * 125 + 1; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = []; if (peg$r0.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e0); } } while (s1 !== peg$FAILED) { s0.push(s1); if (peg$r0.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e0); } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parsetex_expr() { var s0, s1, s2, s3, s4; var key = peg$currPos * 125 + 2; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseexpr(); if (s1 !== peg$FAILED) { s2 = peg$parseEOF(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f1(s1); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parsene_expr(); if (s1 !== peg$FAILED) { s2 = peg$parseFUN_INFIX(); if (s2 !== peg$FAILED) { s3 = peg$parsene_expr(); if (s3 !== peg$FAILED) { s4 = peg$parseEOF(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f2(s1, s2, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseexpr() { var s0, s1; var key = peg$currPos * 125 + 3; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$parsene_expr(); if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = ''; peg$savedPos = s0; s1 = peg$f3(); s0 = s1; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parsene_expr() { var s0, s1, s2; var key = peg$currPos * 125 + 4; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselit_aq(); if (s1 !== peg$FAILED) { s2 = peg$parseexpr(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f4(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parselitsq_aq(); if (s1 !== peg$FAILED) { s2 = peg$parseexpr(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f5(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseDECLh(); if (s1 !== peg$FAILED) { s2 = peg$parseexpr(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f6(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselitsq_aq() { var s0; var key = peg$currPos * 125 + 5; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$parselitsq_fq(); if (s0 === peg$FAILED) { s0 = peg$parselitsq_dq(); if (s0 === peg$FAILED) { s0 = peg$parselitsq_uq(); if (s0 === peg$FAILED) { s0 = peg$parselitsq_zq(); } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselitsq_fq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 6; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselitsq_dq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUP(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f7(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parselitsq_uq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUB(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f8(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselitsq_uq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 7; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselitsq_zq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUP(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f9(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselitsq_dq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 8; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselitsq_zq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUB(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f10(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselitsq_zq() { var s0, s1; var key = peg$currPos * 125 + 9; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseSQ_CLOSE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$f11(); } s0 = s1; peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseexpr_nosqc() { var s0, s1, s2; var key = peg$currPos * 125 + 10; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselit_aq(); if (s1 !== peg$FAILED) { s2 = peg$parseexpr_nosqc(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f12(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = ''; peg$savedPos = s0; s1 = peg$f13(); s0 = s1; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_aq() { var s0; var key = peg$currPos * 125 + 11; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$parselit_fq(); if (s0 === peg$FAILED) { s0 = peg$parselit_dq(); if (s0 === peg$FAILED) { s0 = peg$parselit_uq(); if (s0 === peg$FAILED) { s0 = peg$parselit_dqn(); if (s0 === peg$FAILED) { s0 = peg$parselit_uqn(); if (s0 === peg$FAILED) { s0 = peg$parselit(); } } } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_fq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 12; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselit_dq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUP(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f14(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parselit_uq(); if (s1 !== peg$FAILED) { s2 = peg$parseSUB(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f15(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parselit_dqn(); if (s1 !== peg$FAILED) { s2 = peg$parseSUP(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f16(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_uq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 13; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselit(); if (s1 !== peg$FAILED) { s2 = peg$parseSUP(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f17(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_dq() { var s0, s1, s2, s3; var key = peg$currPos * 125 + 14; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parselit(); if (s1 !== peg$FAILED) { s2 = peg$parseSUB(); if (s2 !== peg$FAILED) { s3 = peg$parselit(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f18(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_uqn() { var s0, s1, s2; var key = peg$currPos * 125 + 15; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseSUP(); if (s1 !== peg$FAILED) { s2 = peg$parselit(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f19(s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit_dqn() { var s0, s1, s2; var key = peg$currPos * 125 + 16; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseSUB(); if (s1 !== peg$FAILED) { s2 = peg$parselit(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f20(s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseleft() { var s0, s1, s2; var key = peg$currPos * 125 + 17; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseLEFT(); if (s1 !== peg$FAILED) { s2 = peg$parseDELIMITER(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f21(s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseLEFT(); if (s1 !== peg$FAILED) { s2 = peg$parseSQ_CLOSE(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f22(); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parseright() { var s0, s1, s2; var key = peg$currPos * 125 + 18; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseRIGHT(); if (s1 !== peg$FAILED) { s2 = peg$parseDELIMITER(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f23(s2); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseRIGHT(); if (s1 !== peg$FAILED) { s2 = peg$parseSQ_CLOSE(); if (s2 !== peg$FAILED) { peg$savedPos = s0; s0 = peg$f24(); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; return s0; } function peg$parselit() { var s0, s1, s2, s3, s4, s5; var key = peg$currPos * 125 + 19; var cached = peg$resultsCache[key]; if (cached) { peg$currPos = cached.nextPos; return cached.result; } s0 = peg$currPos; s1 = peg$parseLITERAL(); if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$f25(s1); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parsegeneric_func(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$f26(s1); if (s2) { s2 = undefined; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parse_(); if (input.charCodeAt(peg$currPos) === 40) { s4 = peg$c15; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e1); } } if (s4 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 91) { s4 = peg$c16; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } } if (s4 === peg$FAILED) { if (input.substr(peg$currPos, 2) === peg$c17) { s4 = peg$c17; peg$currPos += 2; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e3); } } if (s4 === peg$FAILED) { s4 = peg$currPos; s5 = ''; peg$savedPos = s4; s5 = peg$f27(s1); s4 = s5; } } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); peg$savedPos = s0; s0 = peg$f28(s1, s4); } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parsegeneric_func(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$f29(s1); if (s2) { s2 = undefined; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parse_(); peg$savedPos = s0; s0 = peg$f30(s1); } else { peg$currPos = s0;