From 95735f2c97bedff171a7d6c8c545d24393cac24b Mon Sep 17 00:00:00 2001 From: David Majda Date: Mon, 7 Jun 2010 10:59:14 +0200 Subject: [PATCH] Allow trailing semicolon (";") for rules --- lib/metagrammar.js | 2209 +++++++++++++++++++------------------- lib/metagrammar.pegjs | 25 +- test/compiler-test.js | 2 +- test/metagrammar-test.js | 8 +- 4 files changed, 1151 insertions(+), 1093 deletions(-) diff --git a/lib/metagrammar.js b/lib/metagrammar.js index ab0fa7f..79a6a5a 100644 --- a/lib/metagrammar.js +++ b/lib/metagrammar.js @@ -115,21 +115,21 @@ PEG.grammarParser = (function(){ var savedPos1 = this._pos; var result7 = this._parse_identifier(context); if (result7 !== null) { - var result12 = this._parse_literal(context); - if (result12 !== null) { - var result8 = result12; + var result14 = this._parse_literal(context); + if (result14 !== null) { + var result8 = result14; } else { if (this._input.substr(this._pos, 0) === "") { - var result11 = ""; + var result13 = ""; this._pos += 0; } else { - var result11 = null; + var result13 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("")); } } - if (result11 !== null) { - var result8 = result11; + if (result13 !== null) { + var result8 = result13; } else { var result8 = null;; }; @@ -139,7 +139,14 @@ PEG.grammarParser = (function(){ if (result9 !== null) { var result10 = this._parse_choice(context); if (result10 !== null) { - var result6 = [result7, result8, result9, result10]; + var result12 = this._parse_semicolon(context); + var result11 = result12 !== null ? result12 : ''; + if (result11 !== null) { + var result6 = [result7, result8, result9, result10, result11]; + } else { + var result6 = null; + this._pos = savedPos1; + } } else { var result6 = null; this._pos = savedPos1; @@ -188,51 +195,51 @@ PEG.grammarParser = (function(){ var savedPos2 = this._pos; - var result15 = this._parse_sequence(context); - if (result15 !== null) { - var result16 = []; + var result17 = this._parse_sequence(context); + if (result17 !== null) { + var result18 = []; var savedPos3 = this._pos; - var result18 = this._parse_slash(context); - if (result18 !== null) { - var result19 = this._parse_sequence(context); - if (result19 !== null) { - var result17 = [result18, result19]; + var result20 = this._parse_slash(context); + if (result20 !== null) { + var result21 = this._parse_sequence(context); + if (result21 !== null) { + var result19 = [result20, result21]; } else { - var result17 = null; + var result19 = null; this._pos = savedPos3; } } else { - var result17 = null; + var result19 = null; this._pos = savedPos3; } - while (result17 !== null) { - result16.push(result17); + while (result19 !== null) { + result18.push(result19); var savedPos3 = this._pos; - var result18 = this._parse_slash(context); - if (result18 !== null) { - var result19 = this._parse_sequence(context); - if (result19 !== null) { - var result17 = [result18, result19]; + var result20 = this._parse_slash(context); + if (result20 !== null) { + var result21 = this._parse_sequence(context); + if (result21 !== null) { + var result19 = [result20, result21]; } else { - var result17 = null; + var result19 = null; this._pos = savedPos3; } } else { - var result17 = null; + var result19 = null; this._pos = savedPos3; } } - if (result16 !== null) { - var result14 = [result15, result16]; + if (result18 !== null) { + var result16 = [result17, result18]; } else { - var result14 = null; + var result16 = null; this._pos = savedPos2; } } else { - var result14 = null; + var result16 = null; this._pos = savedPos2; } - var result13 = result14 !== null + var result15 = result16 !== null ? (function(head, tail) { if (tail.length > 0) { var alternatives = [head].concat(PEG.ArrayUtils.map( @@ -246,16 +253,16 @@ PEG.grammarParser = (function(){ } else { return head; } - })(result14[0], result14[1]) + })(result16[0], result16[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result13 + result: result15 }; - return result13; + return result15; }, _parse_sequence: function(context) { @@ -270,25 +277,25 @@ PEG.grammarParser = (function(){ var savedPos4 = this._pos; - var result26 = []; - var result28 = this._parse_labeled(context); - while (result28 !== null) { - result26.push(result28); - var result28 = this._parse_labeled(context); - } - if (result26 !== null) { - var result27 = this._parse_action(context); - if (result27 !== null) { - var result25 = [result26, result27]; - } else { - var result25 = null; + var result28 = []; + var result30 = this._parse_labeled(context); + while (result30 !== null) { + result28.push(result30); + var result30 = this._parse_labeled(context); + } + if (result28 !== null) { + var result29 = this._parse_action(context); + if (result29 !== null) { + var result27 = [result28, result29]; + } else { + var result27 = null; this._pos = savedPos4; } } else { - var result25 = null; + var result27 = null; this._pos = savedPos4; } - var result24 = result25 !== null + var result26 = result27 !== null ? (function(elements, action) { var expression = elements.length != 1 ? { @@ -301,18 +308,18 @@ PEG.grammarParser = (function(){ expression: expression, action: action }; - })(result25[0], result25[1]) + })(result27[0], result27[1]) : null; - if (result24 !== null) { - var result20 = result24; + if (result26 !== null) { + var result22 = result26; } else { - var result22 = []; - var result23 = this._parse_labeled(context); - while (result23 !== null) { - result22.push(result23); - var result23 = this._parse_labeled(context); + var result24 = []; + var result25 = this._parse_labeled(context); + while (result25 !== null) { + result24.push(result25); + var result25 = this._parse_labeled(context); } - var result21 = result22 !== null + var result23 = result24 !== null ? (function(elements) { return elements.length != 1 ? { @@ -320,12 +327,12 @@ PEG.grammarParser = (function(){ elements: elements } : elements[0]; - })(result22) + })(result24) : null; - if (result21 !== null) { - var result20 = result21; + if (result23 !== null) { + var result22 = result23; } else { - var result20 = null;; + var result22 = null;; }; } @@ -333,9 +340,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result20 + result: result22 }; - return result20; + return result22; }, _parse_labeled: function(context) { @@ -350,42 +357,42 @@ PEG.grammarParser = (function(){ var savedPos5 = this._pos; - var result33 = this._parse_identifier(context); - if (result33 !== null) { - var result34 = this._parse_colon(context); - if (result34 !== null) { - var result35 = this._parse_prefixed(context); - if (result35 !== null) { - var result32 = [result33, result34, result35]; + var result35 = this._parse_identifier(context); + if (result35 !== null) { + var result36 = this._parse_colon(context); + if (result36 !== null) { + var result37 = this._parse_prefixed(context); + if (result37 !== null) { + var result34 = [result35, result36, result37]; } else { - var result32 = null; + var result34 = null; this._pos = savedPos5; } } else { - var result32 = null; + var result34 = null; this._pos = savedPos5; } } else { - var result32 = null; + var result34 = null; this._pos = savedPos5; } - var result31 = result32 !== null + var result33 = result34 !== null ? (function(label, expression) { return { type: "labeled", label: label, expression: expression }; - })(result32[0], result32[2]) + })(result34[0], result34[2]) : null; - if (result31 !== null) { - var result29 = result31; + if (result33 !== null) { + var result31 = result33; } else { - var result30 = this._parse_prefixed(context); - if (result30 !== null) { - var result29 = result30; + var result32 = this._parse_prefixed(context); + if (result32 !== null) { + var result31 = result32; } else { - var result29 = null;; + var result31 = null;; }; } @@ -393,9 +400,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result29 + result: result31 }; - return result29; + return result31; }, _parse_prefixed: function(context) { @@ -410,60 +417,60 @@ PEG.grammarParser = (function(){ var savedPos7 = this._pos; - var result44 = this._parse_and(context); - if (result44 !== null) { - var result45 = this._parse_suffixed(context); - if (result45 !== null) { - var result43 = [result44, result45]; + var result46 = this._parse_and(context); + if (result46 !== null) { + var result47 = this._parse_suffixed(context); + if (result47 !== null) { + var result45 = [result46, result47]; } else { - var result43 = null; + var result45 = null; this._pos = savedPos7; } } else { - var result43 = null; + var result45 = null; this._pos = savedPos7; } - var result42 = result43 !== null + var result44 = result45 !== null ? (function(expression) { return { type: "and_predicate", expression: expression }; - })(result43[1]) + })(result45[1]) : null; - if (result42 !== null) { - var result36 = result42; + if (result44 !== null) { + var result38 = result44; } else { var savedPos6 = this._pos; - var result40 = this._parse_not(context); - if (result40 !== null) { - var result41 = this._parse_suffixed(context); - if (result41 !== null) { - var result39 = [result40, result41]; + var result42 = this._parse_not(context); + if (result42 !== null) { + var result43 = this._parse_suffixed(context); + if (result43 !== null) { + var result41 = [result42, result43]; } else { - var result39 = null; + var result41 = null; this._pos = savedPos6; } } else { - var result39 = null; + var result41 = null; this._pos = savedPos6; } - var result38 = result39 !== null + var result40 = result41 !== null ? (function(expression) { return { type: "not_predicate", expression: expression }; - })(result39[1]) + })(result41[1]) : null; - if (result38 !== null) { - var result36 = result38; + if (result40 !== null) { + var result38 = result40; } else { - var result37 = this._parse_suffixed(context); - if (result37 !== null) { - var result36 = result37; + var result39 = this._parse_suffixed(context); + if (result39 !== null) { + var result38 = result39; } else { - var result36 = null;; + var result38 = null;; }; }; } @@ -472,9 +479,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result36 + result: result38 }; - return result36; + return result38; }, _parse_suffixed: function(context) { @@ -489,85 +496,85 @@ PEG.grammarParser = (function(){ var savedPos10 = this._pos; - var result58 = this._parse_primary(context); - if (result58 !== null) { - var result59 = this._parse_question(context); - if (result59 !== null) { - var result57 = [result58, result59]; + var result60 = this._parse_primary(context); + if (result60 !== null) { + var result61 = this._parse_question(context); + if (result61 !== null) { + var result59 = [result60, result61]; } else { - var result57 = null; + var result59 = null; this._pos = savedPos10; } } else { - var result57 = null; + var result59 = null; this._pos = savedPos10; } - var result56 = result57 !== null + var result58 = result59 !== null ? (function(expression) { return { type: "optional", expression: expression }; - })(result57[0]) + })(result59[0]) : null; - if (result56 !== null) { - var result46 = result56; + if (result58 !== null) { + var result48 = result58; } else { var savedPos9 = this._pos; - var result54 = this._parse_primary(context); - if (result54 !== null) { - var result55 = this._parse_star(context); - if (result55 !== null) { - var result53 = [result54, result55]; + var result56 = this._parse_primary(context); + if (result56 !== null) { + var result57 = this._parse_star(context); + if (result57 !== null) { + var result55 = [result56, result57]; } else { - var result53 = null; + var result55 = null; this._pos = savedPos9; } } else { - var result53 = null; + var result55 = null; this._pos = savedPos9; } - var result52 = result53 !== null + var result54 = result55 !== null ? (function(expression) { return { type: "zero_or_more", expression: expression }; - })(result53[0]) + })(result55[0]) : null; - if (result52 !== null) { - var result46 = result52; + if (result54 !== null) { + var result48 = result54; } else { var savedPos8 = this._pos; - var result50 = this._parse_primary(context); - if (result50 !== null) { - var result51 = this._parse_plus(context); - if (result51 !== null) { - var result49 = [result50, result51]; + var result52 = this._parse_primary(context); + if (result52 !== null) { + var result53 = this._parse_plus(context); + if (result53 !== null) { + var result51 = [result52, result53]; } else { - var result49 = null; + var result51 = null; this._pos = savedPos8; } } else { - var result49 = null; + var result51 = null; this._pos = savedPos8; } - var result48 = result49 !== null + var result50 = result51 !== null ? (function(expression) { return { type: "one_or_more", expression: expression }; - })(result49[0]) + })(result51[0]) : null; - if (result48 !== null) { - var result46 = result48; + if (result50 !== null) { + var result48 = result50; } else { - var result47 = this._parse_primary(context); - if (result47 !== null) { - var result46 = result47; + var result49 = this._parse_primary(context); + if (result49 !== null) { + var result48 = result49; } else { - var result46 = null;; + var result48 = null;; }; }; }; @@ -577,9 +584,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result46 + result: result48 }; - return result46; + return result48; }, _parse_primary: function(context) { @@ -594,121 +601,121 @@ PEG.grammarParser = (function(){ var savedPos12 = this._pos; - var result73 = this._parse_identifier(context); - if (result73 !== null) { + var result75 = this._parse_identifier(context); + if (result75 !== null) { var savedPos13 = this._pos; var savedReportMatchFailuresVar0 = context.reportMatchFailures; context.reportMatchFailures = false; var savedPos14 = this._pos; - var result79 = this._parse_literal(context); - if (result79 !== null) { - var result76 = result79; + var result81 = this._parse_literal(context); + if (result81 !== null) { + var result78 = result81; } else { if (this._input.substr(this._pos, 0) === "") { - var result78 = ""; + var result80 = ""; this._pos += 0; } else { - var result78 = null; + var result80 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("")); } } - if (result78 !== null) { - var result76 = result78; + if (result80 !== null) { + var result78 = result80; } else { - var result76 = null;; + var result78 = null;; }; } - if (result76 !== null) { - var result77 = this._parse_equals(context); - if (result77 !== null) { - var result75 = [result76, result77]; + if (result78 !== null) { + var result79 = this._parse_equals(context); + if (result79 !== null) { + var result77 = [result78, result79]; } else { - var result75 = null; + var result77 = null; this._pos = savedPos14; } } else { - var result75 = null; + var result77 = null; this._pos = savedPos14; } context.reportMatchFailures = savedReportMatchFailuresVar0; - if (result75 === null) { - var result74 = ''; + if (result77 === null) { + var result76 = ''; } else { - var result74 = null; + var result76 = null; this._pos = savedPos13; } - if (result74 !== null) { - var result72 = [result73, result74]; + if (result76 !== null) { + var result74 = [result75, result76]; } else { - var result72 = null; + var result74 = null; this._pos = savedPos12; } } else { - var result72 = null; + var result74 = null; this._pos = savedPos12; } - var result71 = result72 !== null + var result73 = result74 !== null ? (function(name) { return { type: "rule_ref", name: name }; - })(result72[0]) + })(result74[0]) : null; - if (result71 !== null) { - var result60 = result71; + if (result73 !== null) { + var result62 = result73; } else { - var result70 = this._parse_literal(context); - var result69 = result70 !== null + var result72 = this._parse_literal(context); + var result71 = result72 !== null ? (function(value) { return { type: "literal", value: value }; - })(result70) + })(result72) : null; - if (result69 !== null) { - var result60 = result69; + if (result71 !== null) { + var result62 = result71; } else { - var result68 = this._parse_dot(context); - var result67 = result68 !== null + var result70 = this._parse_dot(context); + var result69 = result70 !== null ? (function() { return { type: "any" }; })() : null; - if (result67 !== null) { - var result60 = result67; + if (result69 !== null) { + var result62 = result69; } else { - var result66 = this._parse_class(context); - if (result66 !== null) { - var result60 = result66; + var result68 = this._parse_class(context); + if (result68 !== null) { + var result62 = result68; } else { var savedPos11 = this._pos; - var result63 = this._parse_lparen(context); - if (result63 !== null) { - var result64 = this._parse_choice(context); - if (result64 !== null) { - var result65 = this._parse_rparen(context); - if (result65 !== null) { - var result62 = [result63, result64, result65]; + var result65 = this._parse_lparen(context); + if (result65 !== null) { + var result66 = this._parse_choice(context); + if (result66 !== null) { + var result67 = this._parse_rparen(context); + if (result67 !== null) { + var result64 = [result65, result66, result67]; } else { - var result62 = null; + var result64 = null; this._pos = savedPos11; } } else { - var result62 = null; + var result64 = null; this._pos = savedPos11; } } else { - var result62 = null; + var result64 = null; this._pos = savedPos11; } - var result61 = result62 !== null - ? (function(expression) { return expression; })(result62[1]) + var result63 = result64 !== null + ? (function(expression) { return expression; })(result64[1]) : null; - if (result61 !== null) { - var result60 = result61; + if (result63 !== null) { + var result62 = result63; } else { - var result60 = null;; + var result62 = null;; }; }; }; @@ -719,9 +726,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result60 + result: result62 }; - return result60; + return result62; }, _parse_action: function(context) { @@ -737,32 +744,32 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; var savedPos15 = this._pos; - var result82 = this._parse_braced(context); - if (result82 !== null) { - var result83 = this._parse___(context); - if (result83 !== null) { - var result81 = [result82, result83]; + var result84 = this._parse_braced(context); + if (result84 !== null) { + var result85 = this._parse___(context); + if (result85 !== null) { + var result83 = [result84, result85]; } else { - var result81 = null; + var result83 = null; this._pos = savedPos15; } } else { - var result81 = null; + var result83 = null; this._pos = savedPos15; } - var result80 = result81 !== null - ? (function(braced) { return braced.substr(1, braced.length - 2); })(result81[0]) + var result82 = result83 !== null + ? (function(braced) { return braced.substr(1, braced.length - 2); })(result83[0]) : null; context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result80 === null) { + if (context.reportMatchFailures && result82 === null) { this._matchFailed("action"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result80 + result: result82 }; - return result80; + return result82; }, _parse_braced: function(context) { @@ -778,78 +785,78 @@ PEG.grammarParser = (function(){ var savedPos16 = this._pos; if (this._input.substr(this._pos, 1) === "{") { - var result86 = "{"; + var result88 = "{"; this._pos += 1; } else { - var result86 = null; + var result88 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("{")); } } - if (result86 !== null) { - var result87 = []; - var result91 = this._parse_braced(context); - if (result91 !== null) { - var result89 = result91; + if (result88 !== null) { + var result89 = []; + var result93 = this._parse_braced(context); + if (result93 !== null) { + var result91 = result93; } else { - var result90 = this._parse_nonBraceCharacter(context); - if (result90 !== null) { - var result89 = result90; + var result92 = this._parse_nonBraceCharacter(context); + if (result92 !== null) { + var result91 = result92; } else { - var result89 = null;; + var result91 = null;; }; } - while (result89 !== null) { - result87.push(result89); - var result91 = this._parse_braced(context); - if (result91 !== null) { - var result89 = result91; + while (result91 !== null) { + result89.push(result91); + var result93 = this._parse_braced(context); + if (result93 !== null) { + var result91 = result93; } else { - var result90 = this._parse_nonBraceCharacter(context); - if (result90 !== null) { - var result89 = result90; + var result92 = this._parse_nonBraceCharacter(context); + if (result92 !== null) { + var result91 = result92; } else { - var result89 = null;; + var result91 = null;; }; } } - if (result87 !== null) { + if (result89 !== null) { if (this._input.substr(this._pos, 1) === "}") { - var result88 = "}"; + var result90 = "}"; this._pos += 1; } else { - var result88 = null; + var result90 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("}")); } } - if (result88 !== null) { - var result85 = [result86, result87, result88]; + if (result90 !== null) { + var result87 = [result88, result89, result90]; } else { - var result85 = null; + var result87 = null; this._pos = savedPos16; } } else { - var result85 = null; + var result87 = null; this._pos = savedPos16; } } else { - var result85 = null; + var result87 = null; this._pos = savedPos16; } - var result84 = result85 !== null + var result86 = result87 !== null ? (function(parts) { return "{" + parts.join("") + "}"; - })(result85[1]) + })(result87[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result84 + result: result86 }; - return result84; + return result86; }, _parse_nonBraceCharacters: function(context) { @@ -863,27 +870,27 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result94 = this._parse_nonBraceCharacter(context); - if (result94 !== null) { - var result93 = []; - while (result94 !== null) { - result93.push(result94); - var result94 = this._parse_nonBraceCharacter(context); + var result96 = this._parse_nonBraceCharacter(context); + if (result96 !== null) { + var result95 = []; + while (result96 !== null) { + result95.push(result96); + var result96 = this._parse_nonBraceCharacter(context); } } else { - var result93 = null; + var result95 = null; } - var result92 = result93 !== null - ? (function(chars) { return chars.join(""); })(result93) + var result94 = result95 !== null + ? (function(chars) { return chars.join(""); })(result95) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result92 + result: result94 }; - return result92; + return result94; }, _parse_nonBraceCharacter: function(context) { @@ -898,10 +905,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[^{}]/) !== null) { - var result95 = this._input.charAt(this._pos); + var result97 = this._input.charAt(this._pos); this._pos++; } else { - var result95 = null; + var result97 = null; if (context.reportMatchFailures) { this._matchFailed("[^{}]"); } @@ -911,9 +918,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result95 + result: result97 }; - return result95; + return result97; }, _parse_equals: function(context) { @@ -929,27 +936,27 @@ PEG.grammarParser = (function(){ var savedPos17 = this._pos; if (this._input.substr(this._pos, 1) === "=") { - var result98 = "="; + var result100 = "="; this._pos += 1; } else { - var result98 = null; + var result100 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("=")); } } - if (result98 !== null) { - var result99 = this._parse___(context); - if (result99 !== null) { - var result97 = [result98, result99]; + if (result100 !== null) { + var result101 = this._parse___(context); + if (result101 !== null) { + var result99 = [result100, result101]; } else { - var result97 = null; + var result99 = null; this._pos = savedPos17; } } else { - var result97 = null; + var result99 = null; this._pos = savedPos17; } - var result96 = result97 !== null + var result98 = result99 !== null ? (function() { return "="; })() : null; @@ -957,9 +964,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result96 + result: result98 }; - return result96; + return result98; }, _parse_colon: function(context) { @@ -975,27 +982,27 @@ PEG.grammarParser = (function(){ var savedPos18 = this._pos; if (this._input.substr(this._pos, 1) === ":") { - var result102 = ":"; + var result104 = ":"; this._pos += 1; } else { - var result102 = null; + var result104 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString(":")); } } - if (result102 !== null) { - var result103 = this._parse___(context); - if (result103 !== null) { - var result101 = [result102, result103]; + if (result104 !== null) { + var result105 = this._parse___(context); + if (result105 !== null) { + var result103 = [result104, result105]; } else { - var result101 = null; + var result103 = null; this._pos = savedPos18; } } else { - var result101 = null; + var result103 = null; this._pos = savedPos18; } - var result100 = result101 !== null + var result102 = result103 !== null ? (function() { return ":"; })() : null; @@ -1003,9 +1010,55 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result100 + result: result102 + }; + return result102; + }, + + _parse_semicolon: function(context) { + var cacheKey = "semicolon" + '@' + this._pos; + var cachedResult = this._cache[cacheKey]; + if (cachedResult) { + this._pos = cachedResult.nextPos; + return cachedResult.result; + } + + var pos = this._pos; + + + var savedPos19 = this._pos; + if (this._input.substr(this._pos, 1) === ";") { + var result108 = ";"; + this._pos += 1; + } else { + var result108 = null; + if (context.reportMatchFailures) { + this._matchFailed(this._quoteString(";")); + } + } + if (result108 !== null) { + var result109 = this._parse___(context); + if (result109 !== null) { + var result107 = [result108, result109]; + } else { + var result107 = null; + this._pos = savedPos19; + } + } else { + var result107 = null; + this._pos = savedPos19; + } + var result106 = result107 !== null + ? (function() { return ";"; })() + : null; + + + + this._cache[cacheKey] = { + nextPos: this._pos, + result: result106 }; - return result100; + return result106; }, _parse_slash: function(context) { @@ -1019,29 +1072,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos19 = this._pos; + var savedPos20 = this._pos; if (this._input.substr(this._pos, 1) === "/") { - var result106 = "/"; + var result112 = "/"; this._pos += 1; } else { - var result106 = null; + var result112 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("/")); } } - if (result106 !== null) { - var result107 = this._parse___(context); - if (result107 !== null) { - var result105 = [result106, result107]; + if (result112 !== null) { + var result113 = this._parse___(context); + if (result113 !== null) { + var result111 = [result112, result113]; } else { - var result105 = null; - this._pos = savedPos19; + var result111 = null; + this._pos = savedPos20; } } else { - var result105 = null; - this._pos = savedPos19; + var result111 = null; + this._pos = savedPos20; } - var result104 = result105 !== null + var result110 = result111 !== null ? (function() { return "/"; })() : null; @@ -1049,9 +1102,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result104 + result: result110 }; - return result104; + return result110; }, _parse_and: function(context) { @@ -1065,29 +1118,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos20 = this._pos; + var savedPos21 = this._pos; if (this._input.substr(this._pos, 1) === "&") { - var result110 = "&"; + var result116 = "&"; this._pos += 1; } else { - var result110 = null; + var result116 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("&")); } } - if (result110 !== null) { - var result111 = this._parse___(context); - if (result111 !== null) { - var result109 = [result110, result111]; + if (result116 !== null) { + var result117 = this._parse___(context); + if (result117 !== null) { + var result115 = [result116, result117]; } else { - var result109 = null; - this._pos = savedPos20; + var result115 = null; + this._pos = savedPos21; } } else { - var result109 = null; - this._pos = savedPos20; + var result115 = null; + this._pos = savedPos21; } - var result108 = result109 !== null + var result114 = result115 !== null ? (function() { return "&"; })() : null; @@ -1095,9 +1148,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result108 + result: result114 }; - return result108; + return result114; }, _parse_not: function(context) { @@ -1111,29 +1164,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos21 = this._pos; + var savedPos22 = this._pos; if (this._input.substr(this._pos, 1) === "!") { - var result114 = "!"; + var result120 = "!"; this._pos += 1; } else { - var result114 = null; + var result120 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("!")); } } - if (result114 !== null) { - var result115 = this._parse___(context); - if (result115 !== null) { - var result113 = [result114, result115]; + if (result120 !== null) { + var result121 = this._parse___(context); + if (result121 !== null) { + var result119 = [result120, result121]; } else { - var result113 = null; - this._pos = savedPos21; + var result119 = null; + this._pos = savedPos22; } } else { - var result113 = null; - this._pos = savedPos21; + var result119 = null; + this._pos = savedPos22; } - var result112 = result113 !== null + var result118 = result119 !== null ? (function() { return "!"; })() : null; @@ -1141,9 +1194,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result112 + result: result118 }; - return result112; + return result118; }, _parse_question: function(context) { @@ -1157,29 +1210,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos22 = this._pos; + var savedPos23 = this._pos; if (this._input.substr(this._pos, 1) === "?") { - var result118 = "?"; + var result124 = "?"; this._pos += 1; } else { - var result118 = null; + var result124 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("?")); } } - if (result118 !== null) { - var result119 = this._parse___(context); - if (result119 !== null) { - var result117 = [result118, result119]; + if (result124 !== null) { + var result125 = this._parse___(context); + if (result125 !== null) { + var result123 = [result124, result125]; } else { - var result117 = null; - this._pos = savedPos22; + var result123 = null; + this._pos = savedPos23; } } else { - var result117 = null; - this._pos = savedPos22; + var result123 = null; + this._pos = savedPos23; } - var result116 = result117 !== null + var result122 = result123 !== null ? (function() { return "?"; })() : null; @@ -1187,9 +1240,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result116 + result: result122 }; - return result116; + return result122; }, _parse_star: function(context) { @@ -1203,29 +1256,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos23 = this._pos; + var savedPos24 = this._pos; if (this._input.substr(this._pos, 1) === "*") { - var result122 = "*"; + var result128 = "*"; this._pos += 1; } else { - var result122 = null; + var result128 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("*")); } } - if (result122 !== null) { - var result123 = this._parse___(context); - if (result123 !== null) { - var result121 = [result122, result123]; + if (result128 !== null) { + var result129 = this._parse___(context); + if (result129 !== null) { + var result127 = [result128, result129]; } else { - var result121 = null; - this._pos = savedPos23; + var result127 = null; + this._pos = savedPos24; } } else { - var result121 = null; - this._pos = savedPos23; + var result127 = null; + this._pos = savedPos24; } - var result120 = result121 !== null + var result126 = result127 !== null ? (function() { return "*"; })() : null; @@ -1233,9 +1286,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result120 + result: result126 }; - return result120; + return result126; }, _parse_plus: function(context) { @@ -1249,29 +1302,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos24 = this._pos; + var savedPos25 = this._pos; if (this._input.substr(this._pos, 1) === "+") { - var result126 = "+"; + var result132 = "+"; this._pos += 1; } else { - var result126 = null; + var result132 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("+")); } } - if (result126 !== null) { - var result127 = this._parse___(context); - if (result127 !== null) { - var result125 = [result126, result127]; + if (result132 !== null) { + var result133 = this._parse___(context); + if (result133 !== null) { + var result131 = [result132, result133]; } else { - var result125 = null; - this._pos = savedPos24; + var result131 = null; + this._pos = savedPos25; } } else { - var result125 = null; - this._pos = savedPos24; + var result131 = null; + this._pos = savedPos25; } - var result124 = result125 !== null + var result130 = result131 !== null ? (function() { return "+"; })() : null; @@ -1279,9 +1332,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result124 + result: result130 }; - return result124; + return result130; }, _parse_lparen: function(context) { @@ -1295,29 +1348,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos25 = this._pos; + var savedPos26 = this._pos; if (this._input.substr(this._pos, 1) === "(") { - var result130 = "("; + var result136 = "("; this._pos += 1; } else { - var result130 = null; + var result136 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("(")); } } - if (result130 !== null) { - var result131 = this._parse___(context); - if (result131 !== null) { - var result129 = [result130, result131]; + if (result136 !== null) { + var result137 = this._parse___(context); + if (result137 !== null) { + var result135 = [result136, result137]; } else { - var result129 = null; - this._pos = savedPos25; + var result135 = null; + this._pos = savedPos26; } } else { - var result129 = null; - this._pos = savedPos25; + var result135 = null; + this._pos = savedPos26; } - var result128 = result129 !== null + var result134 = result135 !== null ? (function() { return "("; })() : null; @@ -1325,9 +1378,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result128 + result: result134 }; - return result128; + return result134; }, _parse_rparen: function(context) { @@ -1341,29 +1394,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos26 = this._pos; + var savedPos27 = this._pos; if (this._input.substr(this._pos, 1) === ")") { - var result134 = ")"; + var result140 = ")"; this._pos += 1; } else { - var result134 = null; + var result140 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString(")")); } } - if (result134 !== null) { - var result135 = this._parse___(context); - if (result135 !== null) { - var result133 = [result134, result135]; + if (result140 !== null) { + var result141 = this._parse___(context); + if (result141 !== null) { + var result139 = [result140, result141]; } else { - var result133 = null; - this._pos = savedPos26; + var result139 = null; + this._pos = savedPos27; } } else { - var result133 = null; - this._pos = savedPos26; + var result139 = null; + this._pos = savedPos27; } - var result132 = result133 !== null + var result138 = result139 !== null ? (function() { return ")"; })() : null; @@ -1371,9 +1424,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result132 + result: result138 }; - return result132; + return result138; }, _parse_dot: function(context) { @@ -1387,29 +1440,29 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos27 = this._pos; + var savedPos28 = this._pos; if (this._input.substr(this._pos, 1) === ".") { - var result138 = "."; + var result144 = "."; this._pos += 1; } else { - var result138 = null; + var result144 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString(".")); } } - if (result138 !== null) { - var result139 = this._parse___(context); - if (result139 !== null) { - var result137 = [result138, result139]; + if (result144 !== null) { + var result145 = this._parse___(context); + if (result145 !== null) { + var result143 = [result144, result145]; } else { - var result137 = null; - this._pos = savedPos27; + var result143 = null; + this._pos = savedPos28; } } else { - var result137 = null; - this._pos = savedPos27; + var result143 = null; + this._pos = savedPos28; } - var result136 = result137 !== null + var result142 = result143 !== null ? (function() { return "."; })() : null; @@ -1417,9 +1470,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result136 + result: result142 }; - return result136; + return result142; }, _parse_identifier: function(context) { @@ -1434,149 +1487,149 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; - var savedPos28 = this._pos; - var result152 = this._parse_letter(context); - if (result152 !== null) { - var result142 = result152; + var savedPos29 = this._pos; + var result158 = this._parse_letter(context); + if (result158 !== null) { + var result148 = result158; } else { if (this._input.substr(this._pos, 1) === "_") { - var result151 = "_"; + var result157 = "_"; this._pos += 1; } else { - var result151 = null; + var result157 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("_")); } } - if (result151 !== null) { - var result142 = result151; + if (result157 !== null) { + var result148 = result157; } else { if (this._input.substr(this._pos, 1) === "$") { - var result150 = "$"; + var result156 = "$"; this._pos += 1; } else { - var result150 = null; + var result156 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("$")); } } - if (result150 !== null) { - var result142 = result150; + if (result156 !== null) { + var result148 = result156; } else { - var result142 = null;; + var result148 = null;; }; }; } - if (result142 !== null) { - var result143 = []; - var result149 = this._parse_letter(context); - if (result149 !== null) { - var result145 = result149; + if (result148 !== null) { + var result149 = []; + var result155 = this._parse_letter(context); + if (result155 !== null) { + var result151 = result155; } else { - var result148 = this._parse_digit(context); - if (result148 !== null) { - var result145 = result148; + var result154 = this._parse_digit(context); + if (result154 !== null) { + var result151 = result154; } else { if (this._input.substr(this._pos, 1) === "_") { - var result147 = "_"; + var result153 = "_"; this._pos += 1; } else { - var result147 = null; + var result153 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("_")); } } - if (result147 !== null) { - var result145 = result147; + if (result153 !== null) { + var result151 = result153; } else { if (this._input.substr(this._pos, 1) === "$") { - var result146 = "$"; + var result152 = "$"; this._pos += 1; } else { - var result146 = null; + var result152 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("$")); } } - if (result146 !== null) { - var result145 = result146; + if (result152 !== null) { + var result151 = result152; } else { - var result145 = null;; + var result151 = null;; }; }; }; } - while (result145 !== null) { - result143.push(result145); - var result149 = this._parse_letter(context); - if (result149 !== null) { - var result145 = result149; + while (result151 !== null) { + result149.push(result151); + var result155 = this._parse_letter(context); + if (result155 !== null) { + var result151 = result155; } else { - var result148 = this._parse_digit(context); - if (result148 !== null) { - var result145 = result148; + var result154 = this._parse_digit(context); + if (result154 !== null) { + var result151 = result154; } else { if (this._input.substr(this._pos, 1) === "_") { - var result147 = "_"; + var result153 = "_"; this._pos += 1; } else { - var result147 = null; + var result153 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("_")); } } - if (result147 !== null) { - var result145 = result147; + if (result153 !== null) { + var result151 = result153; } else { if (this._input.substr(this._pos, 1) === "$") { - var result146 = "$"; + var result152 = "$"; this._pos += 1; } else { - var result146 = null; + var result152 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("$")); } } - if (result146 !== null) { - var result145 = result146; + if (result152 !== null) { + var result151 = result152; } else { - var result145 = null;; + var result151 = null;; }; }; }; } } - if (result143 !== null) { - var result144 = this._parse___(context); - if (result144 !== null) { - var result141 = [result142, result143, result144]; + if (result149 !== null) { + var result150 = this._parse___(context); + if (result150 !== null) { + var result147 = [result148, result149, result150]; } else { - var result141 = null; - this._pos = savedPos28; + var result147 = null; + this._pos = savedPos29; } } else { - var result141 = null; - this._pos = savedPos28; + var result147 = null; + this._pos = savedPos29; } } else { - var result141 = null; - this._pos = savedPos28; + var result147 = null; + this._pos = savedPos29; } - var result140 = result141 !== null + var result146 = result147 !== null ? (function(head, tail) { return head + tail.join(""); - })(result141[0], result141[1]) + })(result147[0], result147[1]) : null; context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result140 === null) { + if (context.reportMatchFailures && result146 === null) { this._matchFailed("identifier"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result140 + result: result146 }; - return result140; + return result146; }, _parse_literal: function(context) { @@ -1591,43 +1644,43 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; - var savedPos29 = this._pos; - var result158 = this._parse_doubleQuotedLiteral(context); - if (result158 !== null) { - var result155 = result158; + var savedPos30 = this._pos; + var result164 = this._parse_doubleQuotedLiteral(context); + if (result164 !== null) { + var result161 = result164; } else { - var result157 = this._parse_singleQuotedLiteral(context); - if (result157 !== null) { - var result155 = result157; + var result163 = this._parse_singleQuotedLiteral(context); + if (result163 !== null) { + var result161 = result163; } else { - var result155 = null;; + var result161 = null;; }; } - if (result155 !== null) { - var result156 = this._parse___(context); - if (result156 !== null) { - var result154 = [result155, result156]; + if (result161 !== null) { + var result162 = this._parse___(context); + if (result162 !== null) { + var result160 = [result161, result162]; } else { - var result154 = null; - this._pos = savedPos29; + var result160 = null; + this._pos = savedPos30; } } else { - var result154 = null; - this._pos = savedPos29; + var result160 = null; + this._pos = savedPos30; } - var result153 = result154 !== null - ? (function(literal) { return literal; })(result154[0]) + var result159 = result160 !== null + ? (function(literal) { return literal; })(result160[0]) : null; context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result153 === null) { + if (context.reportMatchFailures && result159 === null) { this._matchFailed("literal"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result153 + result: result159 }; - return result153; + return result159; }, _parse_doubleQuotedLiteral: function(context) { @@ -1641,58 +1694,58 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos30 = this._pos; + var savedPos31 = this._pos; if (this._input.substr(this._pos, 1) === "\"") { - var result161 = "\""; + var result167 = "\""; this._pos += 1; } else { - var result161 = null; + var result167 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\"")); } } - if (result161 !== null) { - var result162 = []; - var result164 = this._parse_doubleQuotedCharacter(context); - while (result164 !== null) { - result162.push(result164); - var result164 = this._parse_doubleQuotedCharacter(context); + if (result167 !== null) { + var result168 = []; + var result170 = this._parse_doubleQuotedCharacter(context); + while (result170 !== null) { + result168.push(result170); + var result170 = this._parse_doubleQuotedCharacter(context); } - if (result162 !== null) { + if (result168 !== null) { if (this._input.substr(this._pos, 1) === "\"") { - var result163 = "\""; + var result169 = "\""; this._pos += 1; } else { - var result163 = null; + var result169 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\"")); } } - if (result163 !== null) { - var result160 = [result161, result162, result163]; + if (result169 !== null) { + var result166 = [result167, result168, result169]; } else { - var result160 = null; - this._pos = savedPos30; + var result166 = null; + this._pos = savedPos31; } } else { - var result160 = null; - this._pos = savedPos30; + var result166 = null; + this._pos = savedPos31; } } else { - var result160 = null; - this._pos = savedPos30; + var result166 = null; + this._pos = savedPos31; } - var result159 = result160 !== null - ? (function(chars) { return chars.join(""); })(result160[1]) + var result165 = result166 !== null + ? (function(chars) { return chars.join(""); })(result166[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result159 + result: result165 }; - return result159; + return result165; }, _parse_doubleQuotedCharacter: function(context) { @@ -1706,31 +1759,31 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result171 = this._parse_simpleDoubleQuotedCharacter(context); - if (result171 !== null) { - var result165 = result171; + var result177 = this._parse_simpleDoubleQuotedCharacter(context); + if (result177 !== null) { + var result171 = result177; } else { - var result170 = this._parse_simpleEscapeSequence(context); - if (result170 !== null) { - var result165 = result170; + var result176 = this._parse_simpleEscapeSequence(context); + if (result176 !== null) { + var result171 = result176; } else { - var result169 = this._parse_zeroEscapeSequence(context); - if (result169 !== null) { - var result165 = result169; + var result175 = this._parse_zeroEscapeSequence(context); + if (result175 !== null) { + var result171 = result175; } else { - var result168 = this._parse_hexEscapeSequence(context); - if (result168 !== null) { - var result165 = result168; + var result174 = this._parse_hexEscapeSequence(context); + if (result174 !== null) { + var result171 = result174; } else { - var result167 = this._parse_unicodeEscapeSequence(context); - if (result167 !== null) { - var result165 = result167; + var result173 = this._parse_unicodeEscapeSequence(context); + if (result173 !== null) { + var result171 = result173; } else { - var result166 = this._parse_eolEscapeSequence(context); - if (result166 !== null) { - var result165 = result166; + var result172 = this._parse_eolEscapeSequence(context); + if (result172 !== null) { + var result171 = result172; } else { - var result165 = null;; + var result171 = null;; }; }; }; @@ -1742,9 +1795,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result165 + result: result171 }; - return result165; + return result171; }, _parse_simpleDoubleQuotedCharacter: function(context) { @@ -1758,80 +1811,80 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos31 = this._pos; var savedPos32 = this._pos; + var savedPos33 = this._pos; var savedReportMatchFailuresVar1 = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 1) === "\"") { - var result179 = "\""; + var result185 = "\""; this._pos += 1; } else { - var result179 = null; + var result185 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\"")); } } - if (result179 !== null) { - var result176 = result179; + if (result185 !== null) { + var result182 = result185; } else { if (this._input.substr(this._pos, 1) === "\\") { - var result178 = "\\"; + var result184 = "\\"; this._pos += 1; } else { - var result178 = null; + var result184 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\")); } } - if (result178 !== null) { - var result176 = result178; + if (result184 !== null) { + var result182 = result184; } else { - var result177 = this._parse_eolChar(context); - if (result177 !== null) { - var result176 = result177; + var result183 = this._parse_eolChar(context); + if (result183 !== null) { + var result182 = result183; } else { - var result176 = null;; + var result182 = null;; }; }; } context.reportMatchFailures = savedReportMatchFailuresVar1; - if (result176 === null) { - var result174 = ''; + if (result182 === null) { + var result180 = ''; } else { - var result174 = null; - this._pos = savedPos32; + var result180 = null; + this._pos = savedPos33; } - if (result174 !== null) { + if (result180 !== null) { if (this._input.length > this._pos) { - var result175 = this._input.charAt(this._pos); + var result181 = this._input.charAt(this._pos); this._pos++; } else { - var result175 = null; + var result181 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result175 !== null) { - var result173 = [result174, result175]; + if (result181 !== null) { + var result179 = [result180, result181]; } else { - var result173 = null; - this._pos = savedPos31; + var result179 = null; + this._pos = savedPos32; } } else { - var result173 = null; - this._pos = savedPos31; + var result179 = null; + this._pos = savedPos32; } - var result172 = result173 !== null - ? (function(char_) { return char_; })(result173[1]) + var result178 = result179 !== null + ? (function(char_) { return char_; })(result179[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result172 + result: result178 }; - return result172; + return result178; }, _parse_singleQuotedLiteral: function(context) { @@ -1845,58 +1898,58 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos33 = this._pos; + var savedPos34 = this._pos; if (this._input.substr(this._pos, 1) === "'") { - var result182 = "'"; + var result188 = "'"; this._pos += 1; } else { - var result182 = null; + var result188 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("'")); } } - if (result182 !== null) { - var result183 = []; - var result185 = this._parse_singleQuotedCharacter(context); - while (result185 !== null) { - result183.push(result185); - var result185 = this._parse_singleQuotedCharacter(context); + if (result188 !== null) { + var result189 = []; + var result191 = this._parse_singleQuotedCharacter(context); + while (result191 !== null) { + result189.push(result191); + var result191 = this._parse_singleQuotedCharacter(context); } - if (result183 !== null) { + if (result189 !== null) { if (this._input.substr(this._pos, 1) === "'") { - var result184 = "'"; + var result190 = "'"; this._pos += 1; } else { - var result184 = null; + var result190 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("'")); } } - if (result184 !== null) { - var result181 = [result182, result183, result184]; + if (result190 !== null) { + var result187 = [result188, result189, result190]; } else { - var result181 = null; - this._pos = savedPos33; + var result187 = null; + this._pos = savedPos34; } } else { - var result181 = null; - this._pos = savedPos33; + var result187 = null; + this._pos = savedPos34; } } else { - var result181 = null; - this._pos = savedPos33; + var result187 = null; + this._pos = savedPos34; } - var result180 = result181 !== null - ? (function(chars) { return chars.join(""); })(result181[1]) + var result186 = result187 !== null + ? (function(chars) { return chars.join(""); })(result187[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result180 + result: result186 }; - return result180; + return result186; }, _parse_singleQuotedCharacter: function(context) { @@ -1910,31 +1963,31 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result192 = this._parse_simpleSingleQuotedCharacter(context); - if (result192 !== null) { - var result186 = result192; + var result198 = this._parse_simpleSingleQuotedCharacter(context); + if (result198 !== null) { + var result192 = result198; } else { - var result191 = this._parse_simpleEscapeSequence(context); - if (result191 !== null) { - var result186 = result191; + var result197 = this._parse_simpleEscapeSequence(context); + if (result197 !== null) { + var result192 = result197; } else { - var result190 = this._parse_zeroEscapeSequence(context); - if (result190 !== null) { - var result186 = result190; + var result196 = this._parse_zeroEscapeSequence(context); + if (result196 !== null) { + var result192 = result196; } else { - var result189 = this._parse_hexEscapeSequence(context); - if (result189 !== null) { - var result186 = result189; + var result195 = this._parse_hexEscapeSequence(context); + if (result195 !== null) { + var result192 = result195; } else { - var result188 = this._parse_unicodeEscapeSequence(context); - if (result188 !== null) { - var result186 = result188; + var result194 = this._parse_unicodeEscapeSequence(context); + if (result194 !== null) { + var result192 = result194; } else { - var result187 = this._parse_eolEscapeSequence(context); - if (result187 !== null) { - var result186 = result187; + var result193 = this._parse_eolEscapeSequence(context); + if (result193 !== null) { + var result192 = result193; } else { - var result186 = null;; + var result192 = null;; }; }; }; @@ -1946,9 +1999,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result186 + result: result192 }; - return result186; + return result192; }, _parse_simpleSingleQuotedCharacter: function(context) { @@ -1962,80 +2015,80 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos34 = this._pos; var savedPos35 = this._pos; + var savedPos36 = this._pos; var savedReportMatchFailuresVar2 = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 1) === "'") { - var result200 = "'"; + var result206 = "'"; this._pos += 1; } else { - var result200 = null; + var result206 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("'")); } } - if (result200 !== null) { - var result197 = result200; + if (result206 !== null) { + var result203 = result206; } else { if (this._input.substr(this._pos, 1) === "\\") { - var result199 = "\\"; + var result205 = "\\"; this._pos += 1; } else { - var result199 = null; + var result205 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\")); } } - if (result199 !== null) { - var result197 = result199; + if (result205 !== null) { + var result203 = result205; } else { - var result198 = this._parse_eolChar(context); - if (result198 !== null) { - var result197 = result198; + var result204 = this._parse_eolChar(context); + if (result204 !== null) { + var result203 = result204; } else { - var result197 = null;; + var result203 = null;; }; }; } context.reportMatchFailures = savedReportMatchFailuresVar2; - if (result197 === null) { - var result195 = ''; + if (result203 === null) { + var result201 = ''; } else { - var result195 = null; - this._pos = savedPos35; + var result201 = null; + this._pos = savedPos36; } - if (result195 !== null) { + if (result201 !== null) { if (this._input.length > this._pos) { - var result196 = this._input.charAt(this._pos); + var result202 = this._input.charAt(this._pos); this._pos++; } else { - var result196 = null; + var result202 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result196 !== null) { - var result194 = [result195, result196]; + if (result202 !== null) { + var result200 = [result201, result202]; } else { - var result194 = null; - this._pos = savedPos34; + var result200 = null; + this._pos = savedPos35; } } else { - var result194 = null; - this._pos = savedPos34; + var result200 = null; + this._pos = savedPos35; } - var result193 = result194 !== null - ? (function(char_) { return char_; })(result194[1]) + var result199 = result200 !== null + ? (function(char_) { return char_; })(result200[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result193 + result: result199 }; - return result193; + return result199; }, _parse_class: function(context) { @@ -2050,89 +2103,89 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; - var savedPos36 = this._pos; + var savedPos37 = this._pos; if (this._input.substr(this._pos, 1) === "[") { - var result203 = "["; + var result209 = "["; this._pos += 1; } else { - var result203 = null; + var result209 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("[")); } } - if (result203 !== null) { + if (result209 !== null) { if (this._input.substr(this._pos, 1) === "^") { - var result211 = "^"; + var result217 = "^"; this._pos += 1; } else { - var result211 = null; + var result217 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("^")); } } - var result204 = result211 !== null ? result211 : ''; - if (result204 !== null) { - var result205 = []; - var result210 = this._parse_classCharacterRange(context); - if (result210 !== null) { - var result208 = result210; + var result210 = result217 !== null ? result217 : ''; + if (result210 !== null) { + var result211 = []; + var result216 = this._parse_classCharacterRange(context); + if (result216 !== null) { + var result214 = result216; } else { - var result209 = this._parse_classCharacter(context); - if (result209 !== null) { - var result208 = result209; + var result215 = this._parse_classCharacter(context); + if (result215 !== null) { + var result214 = result215; } else { - var result208 = null;; + var result214 = null;; }; } - while (result208 !== null) { - result205.push(result208); - var result210 = this._parse_classCharacterRange(context); - if (result210 !== null) { - var result208 = result210; + while (result214 !== null) { + result211.push(result214); + var result216 = this._parse_classCharacterRange(context); + if (result216 !== null) { + var result214 = result216; } else { - var result209 = this._parse_classCharacter(context); - if (result209 !== null) { - var result208 = result209; + var result215 = this._parse_classCharacter(context); + if (result215 !== null) { + var result214 = result215; } else { - var result208 = null;; + var result214 = null;; }; } } - if (result205 !== null) { + if (result211 !== null) { if (this._input.substr(this._pos, 1) === "]") { - var result206 = "]"; + var result212 = "]"; this._pos += 1; } else { - var result206 = null; + var result212 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("]")); } } - if (result206 !== null) { - var result207 = this._parse___(context); - if (result207 !== null) { - var result202 = [result203, result204, result205, result206, result207]; + if (result212 !== null) { + var result213 = this._parse___(context); + if (result213 !== null) { + var result208 = [result209, result210, result211, result212, result213]; } else { - var result202 = null; - this._pos = savedPos36; + var result208 = null; + this._pos = savedPos37; } } else { - var result202 = null; - this._pos = savedPos36; + var result208 = null; + this._pos = savedPos37; } } else { - var result202 = null; - this._pos = savedPos36; + var result208 = null; + this._pos = savedPos37; } } else { - var result202 = null; - this._pos = savedPos36; + var result208 = null; + this._pos = savedPos37; } } else { - var result202 = null; - this._pos = savedPos36; + var result208 = null; + this._pos = savedPos37; } - var result201 = result202 !== null + var result207 = result208 !== null ? (function(inverted, parts) { partsConverted = PEG.ArrayUtils.map(parts, function(part) { return part.data; @@ -2151,18 +2204,18 @@ PEG.grammarParser = (function(){ // FIXME: Get the raw text from the input directly. rawText: rawText }; - })(result202[1], result202[2]) + })(result208[1], result208[2]) : null; context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result201 === null) { + if (context.reportMatchFailures && result207 === null) { this._matchFailed("character class"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result201 + result: result207 }; - return result201; + return result207; }, _parse_classCharacterRange: function(context) { @@ -2176,35 +2229,35 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos37 = this._pos; - var result214 = this._parse_classCharacter(context); - if (result214 !== null) { + var savedPos38 = this._pos; + var result220 = this._parse_classCharacter(context); + if (result220 !== null) { if (this._input.substr(this._pos, 1) === "-") { - var result215 = "-"; + var result221 = "-"; this._pos += 1; } else { - var result215 = null; + var result221 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("-")); } } - if (result215 !== null) { - var result216 = this._parse_classCharacter(context); - if (result216 !== null) { - var result213 = [result214, result215, result216]; + if (result221 !== null) { + var result222 = this._parse_classCharacter(context); + if (result222 !== null) { + var result219 = [result220, result221, result222]; } else { - var result213 = null; - this._pos = savedPos37; + var result219 = null; + this._pos = savedPos38; } } else { - var result213 = null; - this._pos = savedPos37; + var result219 = null; + this._pos = savedPos38; } } else { - var result213 = null; - this._pos = savedPos37; + var result219 = null; + this._pos = savedPos38; } - var result212 = result213 !== null + var result218 = result219 !== null ? (function(begin, end) { if (begin.data.charCodeAt(0) > end.data.charCodeAt(0)) { throw new this.SyntaxError( @@ -2217,16 +2270,16 @@ PEG.grammarParser = (function(){ // FIXME: Get the raw text from the input directly. rawText: begin.rawText + "-" + end.rawText } - })(result213[0], result213[2]) + })(result219[0], result219[2]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result212 + result: result218 }; - return result212; + return result218; }, _parse_classCharacter: function(context) { @@ -2240,24 +2293,24 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result218 = this._parse_bracketDelimitedCharacter(context); - var result217 = result218 !== null + var result224 = this._parse_bracketDelimitedCharacter(context); + var result223 = result224 !== null ? (function(char_) { return { data: char_, // FIXME: Get the raw text from the input directly. rawText: PEG.RegExpUtils.quoteForClass(char_) }; - })(result218) + })(result224) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result217 + result: result223 }; - return result217; + return result223; }, _parse_bracketDelimitedCharacter: function(context) { @@ -2271,31 +2324,31 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result225 = this._parse_simpleBracketDelimitedCharacter(context); - if (result225 !== null) { - var result219 = result225; + var result231 = this._parse_simpleBracketDelimitedCharacter(context); + if (result231 !== null) { + var result225 = result231; } else { - var result224 = this._parse_simpleEscapeSequence(context); - if (result224 !== null) { - var result219 = result224; + var result230 = this._parse_simpleEscapeSequence(context); + if (result230 !== null) { + var result225 = result230; } else { - var result223 = this._parse_zeroEscapeSequence(context); - if (result223 !== null) { - var result219 = result223; + var result229 = this._parse_zeroEscapeSequence(context); + if (result229 !== null) { + var result225 = result229; } else { - var result222 = this._parse_hexEscapeSequence(context); - if (result222 !== null) { - var result219 = result222; + var result228 = this._parse_hexEscapeSequence(context); + if (result228 !== null) { + var result225 = result228; } else { - var result221 = this._parse_unicodeEscapeSequence(context); - if (result221 !== null) { - var result219 = result221; + var result227 = this._parse_unicodeEscapeSequence(context); + if (result227 !== null) { + var result225 = result227; } else { - var result220 = this._parse_eolEscapeSequence(context); - if (result220 !== null) { - var result219 = result220; + var result226 = this._parse_eolEscapeSequence(context); + if (result226 !== null) { + var result225 = result226; } else { - var result219 = null;; + var result225 = null;; }; }; }; @@ -2307,9 +2360,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result219 + result: result225 }; - return result219; + return result225; }, _parse_simpleBracketDelimitedCharacter: function(context) { @@ -2323,80 +2376,80 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos38 = this._pos; var savedPos39 = this._pos; + var savedPos40 = this._pos; var savedReportMatchFailuresVar3 = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 1) === "]") { - var result233 = "]"; + var result239 = "]"; this._pos += 1; } else { - var result233 = null; + var result239 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("]")); } } - if (result233 !== null) { - var result230 = result233; + if (result239 !== null) { + var result236 = result239; } else { if (this._input.substr(this._pos, 1) === "\\") { - var result232 = "\\"; + var result238 = "\\"; this._pos += 1; } else { - var result232 = null; + var result238 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\")); } } - if (result232 !== null) { - var result230 = result232; + if (result238 !== null) { + var result236 = result238; } else { - var result231 = this._parse_eolChar(context); - if (result231 !== null) { - var result230 = result231; + var result237 = this._parse_eolChar(context); + if (result237 !== null) { + var result236 = result237; } else { - var result230 = null;; + var result236 = null;; }; }; } context.reportMatchFailures = savedReportMatchFailuresVar3; - if (result230 === null) { - var result228 = ''; + if (result236 === null) { + var result234 = ''; } else { - var result228 = null; - this._pos = savedPos39; + var result234 = null; + this._pos = savedPos40; } - if (result228 !== null) { + if (result234 !== null) { if (this._input.length > this._pos) { - var result229 = this._input.charAt(this._pos); + var result235 = this._input.charAt(this._pos); this._pos++; } else { - var result229 = null; + var result235 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result229 !== null) { - var result227 = [result228, result229]; + if (result235 !== null) { + var result233 = [result234, result235]; } else { - var result227 = null; - this._pos = savedPos38; + var result233 = null; + this._pos = savedPos39; } } else { - var result227 = null; - this._pos = savedPos38; + var result233 = null; + this._pos = savedPos39; } - var result226 = result227 !== null - ? (function(char_) { return char_; })(result227[1]) + var result232 = result233 !== null + ? (function(char_) { return char_; })(result233[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result226 + result: result232 }; - return result226; + return result232; }, _parse_simpleEscapeSequence: function(context) { @@ -2410,89 +2463,89 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos40 = this._pos; + var savedPos41 = this._pos; if (this._input.substr(this._pos, 1) === "\\") { - var result236 = "\\"; + var result242 = "\\"; this._pos += 1; } else { - var result236 = null; + var result242 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\")); } } - if (result236 !== null) { - var savedPos41 = this._pos; + if (result242 !== null) { + var savedPos42 = this._pos; var savedReportMatchFailuresVar4 = context.reportMatchFailures; context.reportMatchFailures = false; - var result243 = this._parse_digit(context); - if (result243 !== null) { - var result239 = result243; + var result249 = this._parse_digit(context); + if (result249 !== null) { + var result245 = result249; } else { if (this._input.substr(this._pos, 1) === "x") { - var result242 = "x"; + var result248 = "x"; this._pos += 1; } else { - var result242 = null; + var result248 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("x")); } } - if (result242 !== null) { - var result239 = result242; + if (result248 !== null) { + var result245 = result248; } else { if (this._input.substr(this._pos, 1) === "u") { - var result241 = "u"; + var result247 = "u"; this._pos += 1; } else { - var result241 = null; + var result247 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("u")); } } - if (result241 !== null) { - var result239 = result241; + if (result247 !== null) { + var result245 = result247; } else { - var result240 = this._parse_eolChar(context); - if (result240 !== null) { - var result239 = result240; + var result246 = this._parse_eolChar(context); + if (result246 !== null) { + var result245 = result246; } else { - var result239 = null;; + var result245 = null;; }; }; }; } context.reportMatchFailures = savedReportMatchFailuresVar4; - if (result239 === null) { - var result237 = ''; + if (result245 === null) { + var result243 = ''; } else { - var result237 = null; - this._pos = savedPos41; + var result243 = null; + this._pos = savedPos42; } - if (result237 !== null) { + if (result243 !== null) { if (this._input.length > this._pos) { - var result238 = this._input.charAt(this._pos); + var result244 = this._input.charAt(this._pos); this._pos++; } else { - var result238 = null; + var result244 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result238 !== null) { - var result235 = [result236, result237, result238]; + if (result244 !== null) { + var result241 = [result242, result243, result244]; } else { - var result235 = null; - this._pos = savedPos40; + var result241 = null; + this._pos = savedPos41; } } else { - var result235 = null; - this._pos = savedPos40; + var result241 = null; + this._pos = savedPos41; } } else { - var result235 = null; - this._pos = savedPos40; + var result241 = null; + this._pos = savedPos41; } - var result234 = result235 !== null + var result240 = result241 !== null ? (function(char_) { return char_ .replace("b", "\b") @@ -2501,16 +2554,16 @@ PEG.grammarParser = (function(){ .replace("r", "\r") .replace("t", "\t") .replace("v", "\x0B") // IE does not recognize "\v". - })(result235[2]) + })(result241[2]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result234 + result: result240 }; - return result234; + return result240; }, _parse_zeroEscapeSequence: function(context) { @@ -2524,39 +2577,39 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos42 = this._pos; + var savedPos43 = this._pos; if (this._input.substr(this._pos, 2) === "\\0") { - var result246 = "\\0"; + var result252 = "\\0"; this._pos += 2; } else { - var result246 = null; + var result252 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\0")); } } - if (result246 !== null) { - var savedPos43 = this._pos; + if (result252 !== null) { + var savedPos44 = this._pos; var savedReportMatchFailuresVar5 = context.reportMatchFailures; context.reportMatchFailures = false; - var result248 = this._parse_digit(context); + var result254 = this._parse_digit(context); context.reportMatchFailures = savedReportMatchFailuresVar5; - if (result248 === null) { - var result247 = ''; + if (result254 === null) { + var result253 = ''; } else { - var result247 = null; - this._pos = savedPos43; + var result253 = null; + this._pos = savedPos44; } - if (result247 !== null) { - var result245 = [result246, result247]; + if (result253 !== null) { + var result251 = [result252, result253]; } else { - var result245 = null; - this._pos = savedPos42; + var result251 = null; + this._pos = savedPos43; } } else { - var result245 = null; - this._pos = savedPos42; + var result251 = null; + this._pos = savedPos43; } - var result244 = result245 !== null + var result250 = result251 !== null ? (function() { return "\0"; })() : null; @@ -2564,9 +2617,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result244 + result: result250 }; - return result244; + return result250; }, _parse_hexEscapeSequence: function(context) { @@ -2580,47 +2633,47 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos44 = this._pos; + var savedPos45 = this._pos; if (this._input.substr(this._pos, 2) === "\\x") { - var result251 = "\\x"; + var result257 = "\\x"; this._pos += 2; } else { - var result251 = null; + var result257 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\x")); } } - if (result251 !== null) { - var result252 = this._parse_hexDigit(context); - if (result252 !== null) { - var result253 = this._parse_hexDigit(context); - if (result253 !== null) { - var result250 = [result251, result252, result253]; + if (result257 !== null) { + var result258 = this._parse_hexDigit(context); + if (result258 !== null) { + var result259 = this._parse_hexDigit(context); + if (result259 !== null) { + var result256 = [result257, result258, result259]; } else { - var result250 = null; - this._pos = savedPos44; + var result256 = null; + this._pos = savedPos45; } } else { - var result250 = null; - this._pos = savedPos44; + var result256 = null; + this._pos = savedPos45; } } else { - var result250 = null; - this._pos = savedPos44; + var result256 = null; + this._pos = savedPos45; } - var result249 = result250 !== null + var result255 = result256 !== null ? (function(h1, h2) { return String.fromCharCode(parseInt("0x" + h1 + h2)); - })(result250[1], result250[2]) + })(result256[1], result256[2]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result249 + result: result255 }; - return result249; + return result255; }, _parse_unicodeEscapeSequence: function(context) { @@ -2634,59 +2687,59 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos45 = this._pos; + var savedPos46 = this._pos; if (this._input.substr(this._pos, 2) === "\\u") { - var result256 = "\\u"; + var result262 = "\\u"; this._pos += 2; } else { - var result256 = null; + var result262 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\u")); } } - if (result256 !== null) { - var result257 = this._parse_hexDigit(context); - if (result257 !== null) { - var result258 = this._parse_hexDigit(context); - if (result258 !== null) { - var result259 = this._parse_hexDigit(context); - if (result259 !== null) { - var result260 = this._parse_hexDigit(context); - if (result260 !== null) { - var result255 = [result256, result257, result258, result259, result260]; + if (result262 !== null) { + var result263 = this._parse_hexDigit(context); + if (result263 !== null) { + var result264 = this._parse_hexDigit(context); + if (result264 !== null) { + var result265 = this._parse_hexDigit(context); + if (result265 !== null) { + var result266 = this._parse_hexDigit(context); + if (result266 !== null) { + var result261 = [result262, result263, result264, result265, result266]; } else { - var result255 = null; - this._pos = savedPos45; + var result261 = null; + this._pos = savedPos46; } } else { - var result255 = null; - this._pos = savedPos45; + var result261 = null; + this._pos = savedPos46; } } else { - var result255 = null; - this._pos = savedPos45; + var result261 = null; + this._pos = savedPos46; } } else { - var result255 = null; - this._pos = savedPos45; + var result261 = null; + this._pos = savedPos46; } } else { - var result255 = null; - this._pos = savedPos45; + var result261 = null; + this._pos = savedPos46; } - var result254 = result255 !== null + var result260 = result261 !== null ? (function(h1, h2, h3, h4) { return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); - })(result255[1], result255[2], result255[3], result255[4]) + })(result261[1], result261[2], result261[3], result261[4]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result254 + result: result260 }; - return result254; + return result260; }, _parse_eolEscapeSequence: function(context) { @@ -2700,39 +2753,39 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos46 = this._pos; + var savedPos47 = this._pos; if (this._input.substr(this._pos, 1) === "\\") { - var result263 = "\\"; + var result269 = "\\"; this._pos += 1; } else { - var result263 = null; + var result269 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\\")); } } - if (result263 !== null) { - var result264 = this._parse_eol(context); - if (result264 !== null) { - var result262 = [result263, result264]; + if (result269 !== null) { + var result270 = this._parse_eol(context); + if (result270 !== null) { + var result268 = [result269, result270]; } else { - var result262 = null; - this._pos = savedPos46; + var result268 = null; + this._pos = savedPos47; } } else { - var result262 = null; - this._pos = savedPos46; + var result268 = null; + this._pos = savedPos47; } - var result261 = result262 !== null - ? (function(eol) { return eol; })(result262[1]) + var result267 = result268 !== null + ? (function(eol) { return eol; })(result268[1]) : null; this._cache[cacheKey] = { nextPos: this._pos, - result: result261 + result: result267 }; - return result261; + return result267; }, _parse_digit: function(context) { @@ -2747,10 +2800,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[0-9]/) !== null) { - var result265 = this._input.charAt(this._pos); + var result271 = this._input.charAt(this._pos); this._pos++; } else { - var result265 = null; + var result271 = null; if (context.reportMatchFailures) { this._matchFailed("[0-9]"); } @@ -2760,9 +2813,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result265 + result: result271 }; - return result265; + return result271; }, _parse_hexDigit: function(context) { @@ -2777,10 +2830,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[0-9a-fA-F]/) !== null) { - var result266 = this._input.charAt(this._pos); + var result272 = this._input.charAt(this._pos); this._pos++; } else { - var result266 = null; + var result272 = null; if (context.reportMatchFailures) { this._matchFailed("[0-9a-fA-F]"); } @@ -2790,9 +2843,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result266 + result: result272 }; - return result266; + return result272; }, _parse_letter: function(context) { @@ -2806,15 +2859,15 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result269 = this._parse_lowerCaseLetter(context); - if (result269 !== null) { - var result267 = result269; + var result275 = this._parse_lowerCaseLetter(context); + if (result275 !== null) { + var result273 = result275; } else { - var result268 = this._parse_upperCaseLetter(context); - if (result268 !== null) { - var result267 = result268; + var result274 = this._parse_upperCaseLetter(context); + if (result274 !== null) { + var result273 = result274; } else { - var result267 = null;; + var result273 = null;; }; } @@ -2822,9 +2875,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result267 + result: result273 }; - return result267; + return result273; }, _parse_lowerCaseLetter: function(context) { @@ -2839,10 +2892,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[a-z]/) !== null) { - var result270 = this._input.charAt(this._pos); + var result276 = this._input.charAt(this._pos); this._pos++; } else { - var result270 = null; + var result276 = null; if (context.reportMatchFailures) { this._matchFailed("[a-z]"); } @@ -2852,9 +2905,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result270 + result: result276 }; - return result270; + return result276; }, _parse_upperCaseLetter: function(context) { @@ -2869,10 +2922,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[A-Z]/) !== null) { - var result271 = this._input.charAt(this._pos); + var result277 = this._input.charAt(this._pos); this._pos++; } else { - var result271 = null; + var result277 = null; if (context.reportMatchFailures) { this._matchFailed("[A-Z]"); } @@ -2882,9 +2935,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result271 + result: result277 }; - return result271; + return result277; }, _parse___: function(context) { @@ -2898,38 +2951,38 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var result272 = []; - var result276 = this._parse_whitespace(context); - if (result276 !== null) { - var result273 = result276; + var result278 = []; + var result282 = this._parse_whitespace(context); + if (result282 !== null) { + var result279 = result282; } else { - var result275 = this._parse_eol(context); - if (result275 !== null) { - var result273 = result275; + var result281 = this._parse_eol(context); + if (result281 !== null) { + var result279 = result281; } else { - var result274 = this._parse_comment(context); - if (result274 !== null) { - var result273 = result274; + var result280 = this._parse_comment(context); + if (result280 !== null) { + var result279 = result280; } else { - var result273 = null;; + var result279 = null;; }; }; } - while (result273 !== null) { - result272.push(result273); - var result276 = this._parse_whitespace(context); - if (result276 !== null) { - var result273 = result276; + while (result279 !== null) { + result278.push(result279); + var result282 = this._parse_whitespace(context); + if (result282 !== null) { + var result279 = result282; } else { - var result275 = this._parse_eol(context); - if (result275 !== null) { - var result273 = result275; + var result281 = this._parse_eol(context); + if (result281 !== null) { + var result279 = result281; } else { - var result274 = this._parse_comment(context); - if (result274 !== null) { - var result273 = result274; + var result280 = this._parse_comment(context); + if (result280 !== null) { + var result279 = result280; } else { - var result273 = null;; + var result279 = null;; }; }; } @@ -2939,9 +2992,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result272 + result: result278 }; - return result272; + return result278; }, _parse_comment: function(context) { @@ -2956,27 +3009,27 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; - var result279 = this._parse_singleLineComment(context); - if (result279 !== null) { - var result277 = result279; + var result285 = this._parse_singleLineComment(context); + if (result285 !== null) { + var result283 = result285; } else { - var result278 = this._parse_multiLineComment(context); - if (result278 !== null) { - var result277 = result278; + var result284 = this._parse_multiLineComment(context); + if (result284 !== null) { + var result283 = result284; } else { - var result277 = null;; + var result283 = null;; }; } context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result277 === null) { + if (context.reportMatchFailures && result283 === null) { this._matchFailed("comment"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result277 + result: result283 }; - return result277; + return result283; }, _parse_singleLineComment: function(context) { @@ -2990,103 +3043,103 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos47 = this._pos; + var savedPos48 = this._pos; if (this._input.substr(this._pos, 2) === "//") { - var result281 = "//"; + var result287 = "//"; this._pos += 2; } else { - var result281 = null; + var result287 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("//")); } } - if (result281 !== null) { - var result282 = []; - var savedPos48 = this._pos; + if (result287 !== null) { + var result288 = []; var savedPos49 = this._pos; + var savedPos50 = this._pos; var savedReportMatchFailuresVar6 = context.reportMatchFailures; context.reportMatchFailures = false; - var result286 = this._parse_eolChar(context); + var result292 = this._parse_eolChar(context); context.reportMatchFailures = savedReportMatchFailuresVar6; - if (result286 === null) { - var result284 = ''; + if (result292 === null) { + var result290 = ''; } else { - var result284 = null; - this._pos = savedPos49; + var result290 = null; + this._pos = savedPos50; } - if (result284 !== null) { + if (result290 !== null) { if (this._input.length > this._pos) { - var result285 = this._input.charAt(this._pos); + var result291 = this._input.charAt(this._pos); this._pos++; } else { - var result285 = null; + var result291 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result285 !== null) { - var result283 = [result284, result285]; + if (result291 !== null) { + var result289 = [result290, result291]; } else { - var result283 = null; - this._pos = savedPos48; + var result289 = null; + this._pos = savedPos49; } } else { - var result283 = null; - this._pos = savedPos48; + var result289 = null; + this._pos = savedPos49; } - while (result283 !== null) { - result282.push(result283); - var savedPos48 = this._pos; + while (result289 !== null) { + result288.push(result289); var savedPos49 = this._pos; + var savedPos50 = this._pos; var savedReportMatchFailuresVar6 = context.reportMatchFailures; context.reportMatchFailures = false; - var result286 = this._parse_eolChar(context); + var result292 = this._parse_eolChar(context); context.reportMatchFailures = savedReportMatchFailuresVar6; - if (result286 === null) { - var result284 = ''; + if (result292 === null) { + var result290 = ''; } else { - var result284 = null; - this._pos = savedPos49; + var result290 = null; + this._pos = savedPos50; } - if (result284 !== null) { + if (result290 !== null) { if (this._input.length > this._pos) { - var result285 = this._input.charAt(this._pos); + var result291 = this._input.charAt(this._pos); this._pos++; } else { - var result285 = null; + var result291 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result285 !== null) { - var result283 = [result284, result285]; + if (result291 !== null) { + var result289 = [result290, result291]; } else { - var result283 = null; - this._pos = savedPos48; + var result289 = null; + this._pos = savedPos49; } } else { - var result283 = null; - this._pos = savedPos48; + var result289 = null; + this._pos = savedPos49; } } - if (result282 !== null) { - var result280 = [result281, result282]; + if (result288 !== null) { + var result286 = [result287, result288]; } else { - var result280 = null; - this._pos = savedPos47; + var result286 = null; + this._pos = savedPos48; } } else { - var result280 = null; - this._pos = savedPos47; + var result286 = null; + this._pos = savedPos48; } this._cache[cacheKey] = { nextPos: this._pos, - result: result280 + result: result286 }; - return result280; + return result286; }, _parse_multiLineComment: function(context) { @@ -3100,133 +3153,133 @@ PEG.grammarParser = (function(){ var pos = this._pos; - var savedPos50 = this._pos; + var savedPos51 = this._pos; if (this._input.substr(this._pos, 2) === "/*") { - var result288 = "/*"; + var result294 = "/*"; this._pos += 2; } else { - var result288 = null; + var result294 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("/*")); } } - if (result288 !== null) { - var result289 = []; - var savedPos51 = this._pos; + if (result294 !== null) { + var result295 = []; var savedPos52 = this._pos; + var savedPos53 = this._pos; var savedReportMatchFailuresVar7 = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 2) === "*/") { - var result294 = "*/"; + var result300 = "*/"; this._pos += 2; } else { - var result294 = null; + var result300 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("*/")); } } context.reportMatchFailures = savedReportMatchFailuresVar7; - if (result294 === null) { - var result292 = ''; + if (result300 === null) { + var result298 = ''; } else { - var result292 = null; - this._pos = savedPos52; + var result298 = null; + this._pos = savedPos53; } - if (result292 !== null) { + if (result298 !== null) { if (this._input.length > this._pos) { - var result293 = this._input.charAt(this._pos); + var result299 = this._input.charAt(this._pos); this._pos++; } else { - var result293 = null; + var result299 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result293 !== null) { - var result291 = [result292, result293]; + if (result299 !== null) { + var result297 = [result298, result299]; } else { - var result291 = null; - this._pos = savedPos51; + var result297 = null; + this._pos = savedPos52; } } else { - var result291 = null; - this._pos = savedPos51; + var result297 = null; + this._pos = savedPos52; } - while (result291 !== null) { - result289.push(result291); - var savedPos51 = this._pos; + while (result297 !== null) { + result295.push(result297); var savedPos52 = this._pos; + var savedPos53 = this._pos; var savedReportMatchFailuresVar7 = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 2) === "*/") { - var result294 = "*/"; + var result300 = "*/"; this._pos += 2; } else { - var result294 = null; + var result300 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("*/")); } } context.reportMatchFailures = savedReportMatchFailuresVar7; - if (result294 === null) { - var result292 = ''; + if (result300 === null) { + var result298 = ''; } else { - var result292 = null; - this._pos = savedPos52; + var result298 = null; + this._pos = savedPos53; } - if (result292 !== null) { + if (result298 !== null) { if (this._input.length > this._pos) { - var result293 = this._input.charAt(this._pos); + var result299 = this._input.charAt(this._pos); this._pos++; } else { - var result293 = null; + var result299 = null; if (context.reportMatchFailures) { this._matchFailed('any character'); } } - if (result293 !== null) { - var result291 = [result292, result293]; + if (result299 !== null) { + var result297 = [result298, result299]; } else { - var result291 = null; - this._pos = savedPos51; + var result297 = null; + this._pos = savedPos52; } } else { - var result291 = null; - this._pos = savedPos51; + var result297 = null; + this._pos = savedPos52; } } - if (result289 !== null) { + if (result295 !== null) { if (this._input.substr(this._pos, 2) === "*/") { - var result290 = "*/"; + var result296 = "*/"; this._pos += 2; } else { - var result290 = null; + var result296 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("*/")); } } - if (result290 !== null) { - var result287 = [result288, result289, result290]; + if (result296 !== null) { + var result293 = [result294, result295, result296]; } else { - var result287 = null; - this._pos = savedPos50; + var result293 = null; + this._pos = savedPos51; } } else { - var result287 = null; - this._pos = savedPos50; + var result293 = null; + this._pos = savedPos51; } } else { - var result287 = null; - this._pos = savedPos50; + var result293 = null; + this._pos = savedPos51; } this._cache[cacheKey] = { nextPos: this._pos, - result: result287 + result: result293 }; - return result287; + return result293; }, _parse_eol: function(context) { @@ -3242,81 +3295,81 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos, 1) === "\n") { - var result300 = "\n"; + var result306 = "\n"; this._pos += 1; } else { - var result300 = null; + var result306 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\n")); } } - if (result300 !== null) { - var result295 = result300; + if (result306 !== null) { + var result301 = result306; } else { if (this._input.substr(this._pos, 2) === "\r\n") { - var result299 = "\r\n"; + var result305 = "\r\n"; this._pos += 2; } else { - var result299 = null; + var result305 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\r\n")); } } - if (result299 !== null) { - var result295 = result299; + if (result305 !== null) { + var result301 = result305; } else { if (this._input.substr(this._pos, 1) === "\r") { - var result298 = "\r"; + var result304 = "\r"; this._pos += 1; } else { - var result298 = null; + var result304 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\r")); } } - if (result298 !== null) { - var result295 = result298; + if (result304 !== null) { + var result301 = result304; } else { if (this._input.substr(this._pos, 1) === "\u2028") { - var result297 = "\u2028"; + var result303 = "\u2028"; this._pos += 1; } else { - var result297 = null; + var result303 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\u2028")); } } - if (result297 !== null) { - var result295 = result297; + if (result303 !== null) { + var result301 = result303; } else { if (this._input.substr(this._pos, 1) === "\u2029") { - var result296 = "\u2029"; + var result302 = "\u2029"; this._pos += 1; } else { - var result296 = null; + var result302 = null; if (context.reportMatchFailures) { this._matchFailed(this._quoteString("\u2029")); } } - if (result296 !== null) { - var result295 = result296; + if (result302 !== null) { + var result301 = result302; } else { - var result295 = null;; + var result301 = null;; }; }; }; }; } context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result295 === null) { + if (context.reportMatchFailures && result301 === null) { this._matchFailed("end of line"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result295 + result: result301 }; - return result295; + return result301; }, _parse_eolChar: function(context) { @@ -3331,10 +3384,10 @@ PEG.grammarParser = (function(){ if (this._input.substr(this._pos).match(/^[\n\r\u2028\u2029]/) !== null) { - var result301 = this._input.charAt(this._pos); + var result307 = this._input.charAt(this._pos); this._pos++; } else { - var result301 = null; + var result307 = null; if (context.reportMatchFailures) { this._matchFailed("[\\n\\r\\u2028\\u2029]"); } @@ -3344,9 +3397,9 @@ PEG.grammarParser = (function(){ this._cache[cacheKey] = { nextPos: this._pos, - result: result301 + result: result307 }; - return result301; + return result307; }, _parse_whitespace: function(context) { @@ -3362,24 +3415,24 @@ PEG.grammarParser = (function(){ var savedReportMatchFailures = context.reportMatchFailures; context.reportMatchFailures = false; if (this._input.substr(this._pos).match(/^[   ᠎ -    ]/) !== null) { - var result302 = this._input.charAt(this._pos); + var result308 = this._input.charAt(this._pos); this._pos++; } else { - var result302 = null; + var result308 = null; if (context.reportMatchFailures) { this._matchFailed("[   ᠎ -    ]"); } } context.reportMatchFailures = savedReportMatchFailures; - if (context.reportMatchFailures && result302 === null) { + if (context.reportMatchFailures && result308 === null) { this._matchFailed("whitespace"); } this._cache[cacheKey] = { nextPos: this._pos, - result: result302 + result: result308 }; - return result302; + return result308; }, /* diff --git a/lib/metagrammar.pegjs b/lib/metagrammar.pegjs index 9fb170a..7a4b675 100644 --- a/lib/metagrammar.pegjs +++ b/lib/metagrammar.pegjs @@ -6,7 +6,7 @@ grammar } rule - = name:identifier displayName:(literal / "") equals expression:expression { + = name:identifier displayName:(literal / "") equals expression:expression semicolon? { return { type: "rule", name: name, @@ -136,17 +136,18 @@ nonBraceCharacters nonBraceCharacter = [^{}] -equals = "=" __ { return "="; } -colon = ":" __ { return ":"; } -slash = "/" __ { return "/"; } -and = "&" __ { return "&"; } -not = "!" __ { return "!"; } -question = "?" __ { return "?"; } -star = "*" __ { return "*"; } -plus = "+" __ { return "+"; } -lparen = "(" __ { return "("; } -rparen = ")" __ { return ")"; } -dot = "." __ { return "."; } +equals = "=" __ { return "="; } +colon = ":" __ { return ":"; } +semicolon = ";" __ { return ";"; } +slash = "/" __ { return "/"; } +and = "&" __ { return "&"; } +not = "!" __ { return "!"; } +question = "?" __ { return "?"; } +star = "*" __ { return "*"; } +plus = "+" __ { return "+"; } +lparen = "(" __ { return "("; } +rparen = ")" __ { return ")"; } +dot = "." __ { return "."; } /* * Modelled after ECMA-262, 5th ed., 7.6, but much simplified: diff --git a/test/compiler-test.js b/test/compiler-test.js index 8e2a3bb..01bc1f4 100644 --- a/test/compiler-test.js +++ b/test/compiler-test.js @@ -240,7 +240,7 @@ test("buildParser reports left recursion", function() { 'start = start { }', /* Indirect */ - 'start = stop\nstop = start' + 'start = stop; stop = start' ]; PEG.ArrayUtils.each(grammars, function(grammar) { diff --git a/test/metagrammar-test.js b/test/metagrammar-test.js index 1aade36..0e2b4d2 100644 --- a/test/metagrammar-test.js +++ b/test/metagrammar-test.js @@ -144,11 +144,11 @@ function actionGrammar(action) { return oneRuleGrammar(action_(literal("a"), action)); } -/* Canonical grammar is "a: \"abcd\";\nb: \"efgh\";\nc: \"ijkl\";". */ +/* Canonical grammar is "a: \"abcd\"; b: \"efgh\"; c: \"ijkl\";". */ test("parses grammar", function() { grammarParserParses('a = "abcd"', { a: rule("a", null, literalAbcd) }); grammarParserParses( - 'a = "abcd"\nb = "efgh"\nc = "ijkl"', + 'a = "abcd"; b = "efgh"; c = "ijkl"', { a: rule("a", null, literalAbcd), b: rule("b", null, literalEfgh), @@ -169,6 +169,10 @@ test("parses rule", function() { start: rule("start", "start rule", choiceLiterals) } ); + grammarParserParses( + 'start = "abcd" / "efgh" / "ijkl";', + oneRuleGrammar(choiceLiterals) + ); }); /* Canonical expression is "\"abcd\" / \"efgh\" / \"ijkl\"". */