diff --git a/packages/mini/krill-parser.js b/packages/mini/krill-parser.js index f93c26c5..cdfd4ae4 100644 --- a/packages/mini/krill-parser.js +++ b/packages/mini/krill-parser.js @@ -176,37 +176,39 @@ function peg$parse(input, options) { var peg$c2 = "+"; var peg$c3 = "0"; var peg$c4 = ","; - var peg$c5 = "\""; - var peg$c6 = "'"; - var peg$c7 = "#"; - var peg$c8 = "^"; - var peg$c9 = "_"; - var peg$c10 = ":"; - var peg$c11 = "["; - var peg$c12 = "]"; - var peg$c13 = "<"; - var peg$c14 = ">"; - var peg$c15 = "@"; - var peg$c16 = "!"; - var peg$c17 = "("; - var peg$c18 = ")"; - var peg$c19 = "/"; - var peg$c20 = "*"; - var peg$c21 = "%"; - var peg$c22 = "struct"; - var peg$c23 = "target"; - var peg$c24 = "euclid"; - var peg$c25 = "slow"; - var peg$c26 = "rotL"; - var peg$c27 = "rotR"; - var peg$c28 = "fast"; - var peg$c29 = "scale"; - var peg$c30 = "//"; - var peg$c31 = "cat"; - var peg$c32 = "$"; - var peg$c33 = "setcps"; - var peg$c34 = "setbpm"; - var peg$c35 = "hush"; + var peg$c5 = "|"; + var peg$c6 = "\""; + var peg$c7 = "'"; + var peg$c8 = "#"; + var peg$c9 = "^"; + var peg$c10 = "_"; + var peg$c11 = ":"; + var peg$c12 = "["; + var peg$c13 = "]"; + var peg$c14 = "<"; + var peg$c15 = ">"; + var peg$c16 = "@"; + var peg$c17 = "!"; + var peg$c18 = "("; + var peg$c19 = ")"; + var peg$c20 = "/"; + var peg$c21 = "*"; + var peg$c22 = "%"; + var peg$c23 = "?"; + var peg$c24 = "struct"; + var peg$c25 = "target"; + var peg$c26 = "euclid"; + var peg$c27 = "slow"; + var peg$c28 = "rotL"; + var peg$c29 = "rotR"; + var peg$c30 = "fast"; + var peg$c31 = "scale"; + var peg$c32 = "//"; + var peg$c33 = "cat"; + var peg$c34 = "$"; + var peg$c35 = "setcps"; + var peg$c36 = "setbpm"; + var peg$c37 = "hush"; var peg$r0 = /^[1-9]/; var peg$r1 = /^[eE]/; @@ -226,39 +228,41 @@ function peg$parse(input, options) { var peg$e8 = peg$otherExpectation("whitespace"); var peg$e9 = peg$classExpectation([" ", "\n", "\r", "\t"], 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([["0", "9"], ["a", "z"], ["A", "Z"], "~"], 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$literalExpectation("<", false); - var peg$e21 = peg$literalExpectation(">", false); - var peg$e22 = peg$literalExpectation("@", false); - var peg$e23 = peg$literalExpectation("!", false); - var peg$e24 = peg$literalExpectation("(", false); - var peg$e25 = peg$literalExpectation(")", false); - var peg$e26 = peg$literalExpectation("/", false); - var peg$e27 = peg$literalExpectation("*", false); - var peg$e28 = peg$literalExpectation("%", false); - var peg$e29 = peg$literalExpectation("struct", false); - var peg$e30 = peg$literalExpectation("target", false); - var peg$e31 = peg$literalExpectation("euclid", false); - var peg$e32 = peg$literalExpectation("slow", false); - var peg$e33 = peg$literalExpectation("rotL", false); - var peg$e34 = peg$literalExpectation("rotR", false); - var peg$e35 = peg$literalExpectation("fast", false); - var peg$e36 = peg$literalExpectation("scale", false); - var peg$e37 = peg$literalExpectation("//", false); - var peg$e38 = peg$classExpectation(["\n"], true, false); - var peg$e39 = peg$literalExpectation("cat", false); - var peg$e40 = peg$literalExpectation("$", false); - var peg$e41 = peg$literalExpectation("setcps", false); - var peg$e42 = peg$literalExpectation("setbpm", false); - var peg$e43 = peg$literalExpectation("hush", false); + var peg$e11 = peg$literalExpectation("|", false); + var peg$e12 = peg$literalExpectation("\"", false); + var peg$e13 = peg$literalExpectation("'", false); + var peg$e14 = peg$classExpectation([["0", "9"], ["a", "z"], ["A", "Z"], "~"], false, 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$literalExpectation("]", false); + var peg$e21 = peg$literalExpectation("<", false); + var peg$e22 = peg$literalExpectation(">", false); + var peg$e23 = peg$literalExpectation("@", false); + var peg$e24 = peg$literalExpectation("!", false); + var peg$e25 = peg$literalExpectation("(", false); + var peg$e26 = peg$literalExpectation(")", false); + var peg$e27 = peg$literalExpectation("/", false); + var peg$e28 = peg$literalExpectation("*", false); + var peg$e29 = peg$literalExpectation("%", false); + var peg$e30 = peg$literalExpectation("?", false); + var peg$e31 = peg$literalExpectation("struct", false); + var peg$e32 = peg$literalExpectation("target", false); + var peg$e33 = peg$literalExpectation("euclid", false); + var peg$e34 = peg$literalExpectation("slow", false); + var peg$e35 = peg$literalExpectation("rotL", false); + var peg$e36 = peg$literalExpectation("rotR", false); + var peg$e37 = peg$literalExpectation("fast", false); + var peg$e38 = peg$literalExpectation("scale", false); + var peg$e39 = peg$literalExpectation("//", false); + var peg$e40 = peg$classExpectation(["\n"], true, false); + var peg$e41 = peg$literalExpectation("cat", false); + var peg$e42 = peg$literalExpectation("$", false); + var peg$e43 = peg$literalExpectation("setcps", false); + var peg$e44 = peg$literalExpectation("setbpm", false); + var peg$e45 = peg$literalExpectation("hush", false); var peg$f0 = function() { return parseFloat(text()); }; var peg$f1 = function(chars) { return chars.join("") }; @@ -270,28 +274,30 @@ function peg$parse(input, options) { var peg$f7 = function(a) { return { operator : { type_: "stretch", arguments_ :{ amount:a } } } }; var peg$f8 = function(a) { return { operator : { type_: "stretch", arguments_ :{ amount:"1/"+a } } } }; var peg$f9 = function(a) { return { operator : { type_: "fixed-step", arguments_ :{ amount:a } } } }; - var peg$f10 = function(s, o) { return new ElementStub(s, o);}; - var peg$f11 = function(s) { return new PatternStub(s,"h"); }; - var peg$f12 = function(c, v) { return v}; - var peg$f13 = function(c, cs) { if (cs.length == 0 && c instanceof Object) { return c;} else { cs.unshift(c); return new PatternStub(cs,"v");} }; - var peg$f14 = function(s) { return s; }; - var peg$f15 = function(s) { return { name: "struct", args: { sequence:s }}}; - var peg$f16 = function(s) { return { name: "target", args : { name:s}}}; - var peg$f17 = function(p, s, r) { return { name: "bjorklund", args :{ pulse: parseInt(p), step:parseInt(s) }}}; - var peg$f18 = function(a) { return { name: "stretch", args :{ amount: a}}}; - var peg$f19 = function(a) { return { name: "shift", args :{ amount: "-"+a}}}; - var peg$f20 = function(a) { return { name: "shift", args :{ amount: a}}}; - var peg$f21 = function(a) { return { name: "stretch", args :{ amount: "1/"+a}}}; - var peg$f22 = function(s) { return { name: "scale", args :{ scale: s.join("")}}}; - var peg$f23 = function(s, v) { return v}; - var peg$f24 = function(s, ss) { ss.unshift(s); return new PatternStub(ss,"t"); }; - var peg$f25 = function(sg) {return sg}; - var peg$f26 = function(o, soc) { return new OperatorStub(o.name,o.args,soc)}; - var peg$f27 = function(sc) { return sc }; - var peg$f28 = function(c) { return c }; - var peg$f29 = function(v) { return new CommandStub("setcps", { value: v})}; - var peg$f30 = function(v) { return new CommandStub("setcps", { value: (v/120/2)})}; - var peg$f31 = function() { return new CommandStub("hush")}; + var peg$f10 = function(a) { return { operator : { type_: "degradeBy", arguments_ :{ amount:(a? a : 0.5) } } } }; + var peg$f11 = function(s, o) { return new ElementStub(s, o);}; + var peg$f12 = function(s) { return new PatternStub(s,"h"); }; + var peg$f13 = function(tail) { return { alignment: 'v', list: tail }; }; + var peg$f14 = function(tail) { return { alignment: 'r', list: tail }; }; + var peg$f15 = function(head, tail) { if (tail && tail.list.length > 0) { return new PatternStub([head, ...tail.list], tail.alignment); } else { return head; } }; + var peg$f16 = function(sc) { return sc; }; + var peg$f17 = function(s) { return { name: "struct", args: { sequence:s }}}; + var peg$f18 = function(s) { return { name: "target", args : { name:s}}}; + var peg$f19 = function(p, s, r) { return { name: "bjorklund", args :{ pulse: parseInt(p), step:parseInt(s) }}}; + var peg$f20 = function(a) { return { name: "stretch", args :{ amount: a}}}; + var peg$f21 = function(a) { return { name: "shift", args :{ amount: "-"+a}}}; + var peg$f22 = function(a) { return { name: "shift", args :{ amount: a}}}; + var peg$f23 = function(a) { return { name: "stretch", args :{ amount: "1/"+a}}}; + var peg$f24 = function(s) { return { name: "scale", args :{ scale: s.join("")}}}; + var peg$f25 = function(s, v) { return v}; + var peg$f26 = function(s, ss) { ss.unshift(s); return new PatternStub(ss,"t"); }; + var peg$f27 = function(sg) {return sg}; + var peg$f28 = function(o, soc) { return new OperatorStub(o.name,o.args,soc)}; + var peg$f29 = function(sc) { return sc }; + var peg$f30 = function(c) { return c }; + var peg$f31 = function(v) { return new CommandStub("setcps", { value: v})}; + var peg$f32 = function(v) { return new CommandStub("setcps", { value: (v/120/2)})}; + var peg$f33 = function() { return new CommandStub("hush")}; var peg$currPos = 0; var peg$savedPos = 0; var peg$posDetailsCache = [{ line: 1, column: 1 }]; @@ -734,23 +740,47 @@ function peg$parse(input, options) { return s0; } + function peg$parsepipe() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsews(); + if (input.charCodeAt(peg$currPos) === 124) { + s2 = peg$c5; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e11); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsews(); + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parsequote() { var s0; if (input.charCodeAt(peg$currPos) === 34) { - s0 = peg$c5; + s0 = peg$c6; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e11); } + if (peg$silentFails === 0) { peg$fail(peg$e12); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s0 = peg$c6; + s0 = peg$c7; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e12); } + if (peg$silentFails === 0) { peg$fail(peg$e13); } } } @@ -765,7 +795,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e13); } + if (peg$silentFails === 0) { peg$fail(peg$e14); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 45) { @@ -777,11 +807,11 @@ function peg$parse(input, options) { } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s0 = peg$c7; + s0 = peg$c8; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e14); } + if (peg$silentFails === 0) { peg$fail(peg$e15); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { @@ -793,27 +823,27 @@ function peg$parse(input, options) { } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 94) { - s0 = peg$c8; + s0 = peg$c9; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e15); } + if (peg$silentFails === 0) { peg$fail(peg$e16); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 95) { - s0 = peg$c9; + s0 = peg$c10; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } + if (peg$silentFails === 0) { peg$fail(peg$e17); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s0 = peg$c10; + s0 = peg$c11; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e17); } + if (peg$silentFails === 0) { peg$fail(peg$e18); } } } } @@ -858,23 +888,23 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 91) { - s2 = peg$c11; + s2 = peg$c12; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e18); } + if (peg$silentFails === 0) { peg$fail(peg$e19); } } if (s2 !== peg$FAILED) { s3 = peg$parsews(); - s4 = peg$parsestack(); + s4 = peg$parsestack_or_choose(); if (s4 !== peg$FAILED) { s5 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 93) { - s6 = peg$c12; + s6 = peg$c13; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e19); } + if (peg$silentFails === 0) { peg$fail(peg$e20); } } if (s6 !== peg$FAILED) { s7 = peg$parsews(); @@ -902,11 +932,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 60) { - s2 = peg$c13; + s2 = peg$c14; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e20); } + if (peg$silentFails === 0) { peg$fail(peg$e21); } } if (s2 !== peg$FAILED) { s3 = peg$parsews(); @@ -914,11 +944,11 @@ function peg$parse(input, options) { if (s4 !== peg$FAILED) { s5 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 62) { - s6 = peg$c14; + s6 = peg$c15; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e21); } + if (peg$silentFails === 0) { peg$fail(peg$e22); } } if (s6 !== peg$FAILED) { s7 = peg$parsews(); @@ -968,6 +998,9 @@ function peg$parse(input, options) { s0 = peg$parseslice_fixed_step(); if (s0 === peg$FAILED) { s0 = peg$parseslice_replicate(); + if (s0 === peg$FAILED) { + s0 = peg$parseslice_degrade(); + } } } } @@ -982,11 +1015,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { - s1 = peg$c15; + s1 = peg$c16; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e22); } + if (peg$silentFails === 0) { peg$fail(peg$e23); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); @@ -1010,11 +1043,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 33) { - s1 = peg$c16; + s1 = peg$c17; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e23); } + if (peg$silentFails === 0) { peg$fail(peg$e24); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); @@ -1038,11 +1071,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 40) { - s1 = peg$c17; + s1 = peg$c18; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } + if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); @@ -1066,11 +1099,11 @@ function peg$parse(input, options) { } s12 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 41) { - s13 = peg$c18; + s13 = peg$c19; peg$currPos++; } else { s13 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e25); } + if (peg$silentFails === 0) { peg$fail(peg$e26); } } if (s13 !== peg$FAILED) { peg$savedPos = s0; @@ -1104,11 +1137,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 47) { - s1 = peg$c19; + s1 = peg$c20; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e26); } + if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); @@ -1132,11 +1165,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 42) { - s1 = peg$c20; + s1 = peg$c21; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e27); } + if (peg$silentFails === 0) { peg$fail(peg$e28); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); @@ -1160,11 +1193,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 37) { - s1 = peg$c21; + s1 = peg$c22; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e28); } + if (peg$silentFails === 0) { peg$fail(peg$e29); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); @@ -1183,6 +1216,32 @@ function peg$parse(input, options) { return s0; } + function peg$parseslice_degrade() { + var s0, s1, s2; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 63) { + s1 = peg$c23; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e30); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsenumber(); + if (s2 === peg$FAILED) { + s2 = null; + } + peg$savedPos = s0; + s0 = peg$f10(s2); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parseslice_with_modifier() { var s0, s1, s2; @@ -1194,7 +1253,7 @@ function peg$parse(input, options) { s2 = null; } peg$savedPos = s0; - s0 = peg$f10(s1, s2); + s0 = peg$f11(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1219,55 +1278,126 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f11(s1); + s1 = peg$f12(s1); } s0 = s1; return s0; } - function peg$parsestack() { - var s0, s1, s2, s3, s4, s5; + function peg$parsestack_tail() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = []; + s2 = peg$currPos; + s3 = peg$parsecomma(); + if (s3 !== peg$FAILED) { + s4 = peg$parsesingle_cycle(); + if (s4 !== peg$FAILED) { + s2 = s4; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$currPos; + s3 = peg$parsecomma(); + if (s3 !== peg$FAILED) { + s4 = peg$parsesingle_cycle(); + if (s4 !== peg$FAILED) { + s2 = s4; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f13(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsechoose_tail() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = []; + s2 = peg$currPos; + s3 = peg$parsepipe(); + if (s3 !== peg$FAILED) { + s4 = peg$parsesingle_cycle(); + if (s4 !== peg$FAILED) { + s2 = s4; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$currPos; + s3 = peg$parsepipe(); + if (s3 !== peg$FAILED) { + s4 = peg$parsesingle_cycle(); + if (s4 !== peg$FAILED) { + s2 = s4; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f14(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsestack_or_choose() { + var s0, s1, s2; s0 = peg$currPos; s1 = peg$parsesingle_cycle(); if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$currPos; - s4 = peg$parsecomma(); - if (s4 !== peg$FAILED) { - s5 = peg$parsesingle_cycle(); - if (s5 !== peg$FAILED) { - peg$savedPos = s3; - s3 = peg$f12(s1, s5); - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; + s2 = peg$parsestack_tail(); + if (s2 === peg$FAILED) { + s2 = peg$parsechoose_tail(); } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$parsecomma(); - if (s4 !== peg$FAILED) { - s5 = peg$parsesingle_cycle(); - if (s5 !== peg$FAILED) { - peg$savedPos = s3; - s3 = peg$f12(s1, s5); - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } + if (s2 === peg$FAILED) { + s2 = null; } peg$savedPos = s0; - s0 = peg$f13(s1, s2); + s0 = peg$f15(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1283,12 +1413,12 @@ function peg$parse(input, options) { s1 = peg$parsews(); s2 = peg$parsequote(); if (s2 !== peg$FAILED) { - s3 = peg$parsestack(); + s3 = peg$parsestack_or_choose(); if (s3 !== peg$FAILED) { s4 = peg$parsequote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f14(s3); + s0 = peg$f16(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1338,19 +1468,19 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c22) { - s1 = peg$c22; + if (input.substr(peg$currPos, 6) === peg$c24) { + s1 = peg$c24; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e29); } + if (peg$silentFails === 0) { peg$fail(peg$e31); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); s3 = peg$parsesequence_or_operator(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f15(s3); + s0 = peg$f17(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1367,12 +1497,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c23) { - s1 = peg$c23; + if (input.substr(peg$currPos, 6) === peg$c25) { + s1 = peg$c25; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); @@ -1383,7 +1513,7 @@ function peg$parse(input, options) { s5 = peg$parsequote(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f16(s4); + s0 = peg$f18(s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1408,12 +1538,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c24) { - s1 = peg$c24; + if (input.substr(peg$currPos, 6) === peg$c26) { + s1 = peg$c26; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); @@ -1428,7 +1558,7 @@ function peg$parse(input, options) { s7 = null; } peg$savedPos = s0; - s0 = peg$f17(s3, s5, s7); + s0 = peg$f19(s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1448,64 +1578,6 @@ function peg$parse(input, options) { function peg$parseslow() { var s0, s1, s2, s3; - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c25) { - s1 = peg$c25; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } - } - if (s1 !== peg$FAILED) { - s2 = peg$parsews(); - s3 = peg$parsenumber(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f18(s3); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parserotL() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c26) { - s1 = peg$c26; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } - } - if (s1 !== peg$FAILED) { - s2 = peg$parsews(); - s3 = peg$parsenumber(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f19(s3); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parserotR() { - var s0, s1, s2, s3; - s0 = peg$currPos; if (input.substr(peg$currPos, 4) === peg$c27) { s1 = peg$c27; @@ -1532,7 +1604,7 @@ function peg$parse(input, options) { return s0; } - function peg$parsefast() { + function peg$parserotL() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -1561,16 +1633,74 @@ function peg$parse(input, options) { return s0; } + function peg$parserotR() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c29) { + s1 = peg$c29; + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e36); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsews(); + s3 = peg$parsenumber(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f22(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsefast() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c30) { + s1 = peg$c30; + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e37); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsews(); + s3 = peg$parsenumber(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f23(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parsescale() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c29) { - s1 = peg$c29; + if (input.substr(peg$currPos, 5) === peg$c31) { + s1 = peg$c31; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); @@ -1590,7 +1720,7 @@ function peg$parse(input, options) { s5 = peg$parsequote(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f22(s4); + s0 = peg$f24(s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1615,12 +1745,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c30) { - s1 = peg$c30; + if (input.substr(peg$currPos, 2) === peg$c32) { + s1 = peg$c32; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e39); } } if (s1 !== peg$FAILED) { s2 = []; @@ -1629,7 +1759,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -1638,7 +1768,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } } s1 = [s1, s2]; @@ -1655,21 +1785,21 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c31) { - s1 = peg$c31; + if (input.substr(peg$currPos, 3) === peg$c33) { + s1 = peg$c33; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } + if (peg$silentFails === 0) { peg$fail(peg$e41); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 91) { - s3 = peg$c11; + s3 = peg$c12; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e18); } + if (peg$silentFails === 0) { peg$fail(peg$e19); } } if (s3 !== peg$FAILED) { s4 = peg$parsews(); @@ -1682,7 +1812,7 @@ function peg$parse(input, options) { s9 = peg$parsesequence_or_operator(); if (s9 !== peg$FAILED) { peg$savedPos = s7; - s7 = peg$f23(s5, s9); + s7 = peg$f25(s5, s9); } else { peg$currPos = s7; s7 = peg$FAILED; @@ -1699,7 +1829,7 @@ function peg$parse(input, options) { s9 = peg$parsesequence_or_operator(); if (s9 !== peg$FAILED) { peg$savedPos = s7; - s7 = peg$f23(s5, s9); + s7 = peg$f25(s5, s9); } else { peg$currPos = s7; s7 = peg$FAILED; @@ -1711,15 +1841,15 @@ function peg$parse(input, options) { } s7 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 93) { - s8 = peg$c12; + s8 = peg$c13; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e19); } + if (peg$silentFails === 0) { peg$fail(peg$e20); } } if (s8 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f24(s5, s6); + s0 = peg$f26(s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1765,7 +1895,7 @@ function peg$parse(input, options) { s4 = peg$parsecomment(); } peg$savedPos = s0; - s0 = peg$f25(s1); + s0 = peg$f27(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1776,18 +1906,18 @@ function peg$parse(input, options) { if (s1 !== peg$FAILED) { s2 = peg$parsews(); if (input.charCodeAt(peg$currPos) === 36) { - s3 = peg$c32; + s3 = peg$c34; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } + if (peg$silentFails === 0) { peg$fail(peg$e42); } } if (s3 !== peg$FAILED) { s4 = peg$parsews(); s5 = peg$parsesequence_or_operator(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f26(s1, s5); + s0 = peg$f28(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1812,7 +1942,7 @@ function peg$parse(input, options) { s1 = peg$parsesequence_or_operator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(s1); + s1 = peg$f29(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -1845,7 +1975,7 @@ function peg$parse(input, options) { if (s2 !== peg$FAILED) { s3 = peg$parsews(); peg$savedPos = s0; - s0 = peg$f28(s2); + s0 = peg$f30(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1858,19 +1988,19 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c33) { - s1 = peg$c33; + if (input.substr(peg$currPos, 6) === peg$c35) { + s1 = peg$c35; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); s3 = peg$parsenumber(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f29(s3); + s0 = peg$f31(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1887,19 +2017,19 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c34) { - s1 = peg$c34; + if (input.substr(peg$currPos, 6) === peg$c36) { + s1 = peg$c36; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { s2 = peg$parsews(); s3 = peg$parsenumber(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f30(s3); + s0 = peg$f32(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1916,16 +2046,16 @@ function peg$parse(input, options) { var s0, s1; s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c35) { - s1 = peg$c35; + if (input.substr(peg$currPos, 4) === peg$c37) { + s1 = peg$c37; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f33(); } s0 = s1;