Browse Source

Killed *MatchFailure classes => simpler code.

redux
David Majda 13 years ago
parent
commit
20e230ca0e
  1. 8
      lib/compiler.js
  2. 148
      lib/metagrammar.js
  3. 73
      lib/runtime.js

8
lib/compiler.js

@ -342,7 +342,7 @@ PEG.Grammar.Rule.prototype.compile = function() {
);
var reportMatchFailureCode = PEG.Compiler.formatCode(
"if (context.reportMatchFailures && ${resultVar} === null) {",
" this._matchFailed(new PEG.Parser.NamedRuleMatchFailure(${displayName|string}));",
" this._matchFailed(${displayName|string});",
"}",
{
displayName: this._displayName,
@ -413,7 +413,7 @@ PEG.Grammar.Literal.prototype.compile = function(resultVar) {
"} else {",
" var ${resultVar} = null;",
" if (context.reportMatchFailures) {",
" this._matchFailed(new PEG.Parser.LiteralMatchFailure(${value|string}));",
" this._matchFailed(PEG.StringUtils.quote(${value|string}));",
" }",
"}",
{
@ -432,7 +432,7 @@ PEG.Grammar.Class.prototype.compile = function(resultVar) {
"} else {",
" var ${resultVar} = null;",
" if (context.reportMatchFailures) {",
" this._matchFailed(new PEG.Parser.ClassMatchFailure(${characters|string}));",
" this._matchFailed('[' + ${characters|string} + ']');",
" }",
"}",
{
@ -451,7 +451,7 @@ PEG.Grammar.Any.prototype.compile = function(resultVar) {
"} else {",
" var ${resultVar} = null;",
" if (context.reportMatchFailures) {",
" this._matchFailed(new PEG.Parser.AnyMatchFailure());",
" this._matchFailed('any character');",
" }",
"}",
{ resultVar: resultVar }

148
lib/metagrammar.js

@ -92,7 +92,7 @@ PEG.grammarParser = (function(){
} else {
var result14 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure(""));
this._matchFailed(PEG.StringUtils.quote(""));
}
}
if (result14 !== null) {
@ -498,7 +498,7 @@ PEG.grammarParser = (function(){
} else {
var result76 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure(""));
this._matchFailed(PEG.StringUtils.quote(""));
}
}
if (result76 !== null) {
@ -636,7 +636,7 @@ PEG.grammarParser = (function(){
: null;
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result78 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("action"));
this._matchFailed("action");
}
this._cache["action"][pos] = {
@ -664,7 +664,7 @@ PEG.grammarParser = (function(){
} else {
var result84 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("{"));
this._matchFailed(PEG.StringUtils.quote("{"));
}
}
if (result84 !== null) {
@ -701,7 +701,7 @@ PEG.grammarParser = (function(){
} else {
var result86 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("}"));
this._matchFailed(PEG.StringUtils.quote("}"));
}
}
if (result86 !== null) {
@ -798,7 +798,7 @@ PEG.grammarParser = (function(){
} else {
var result97 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("^{}"));
this._matchFailed('[' + "^{}" + ']');
}
}
var result96 = result97 !== null
@ -832,7 +832,7 @@ PEG.grammarParser = (function(){
} else {
var result100 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure(":"));
this._matchFailed(PEG.StringUtils.quote(":"));
}
}
if (result100 !== null) {
@ -878,7 +878,7 @@ PEG.grammarParser = (function(){
} else {
var result104 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("/"));
this._matchFailed(PEG.StringUtils.quote("/"));
}
}
if (result104 !== null) {
@ -924,7 +924,7 @@ PEG.grammarParser = (function(){
} else {
var result108 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("&"));
this._matchFailed(PEG.StringUtils.quote("&"));
}
}
if (result108 !== null) {
@ -970,7 +970,7 @@ PEG.grammarParser = (function(){
} else {
var result112 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("!"));
this._matchFailed(PEG.StringUtils.quote("!"));
}
}
if (result112 !== null) {
@ -1016,7 +1016,7 @@ PEG.grammarParser = (function(){
} else {
var result116 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("?"));
this._matchFailed(PEG.StringUtils.quote("?"));
}
}
if (result116 !== null) {
@ -1062,7 +1062,7 @@ PEG.grammarParser = (function(){
} else {
var result120 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("*"));
this._matchFailed(PEG.StringUtils.quote("*"));
}
}
if (result120 !== null) {
@ -1108,7 +1108,7 @@ PEG.grammarParser = (function(){
} else {
var result124 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("+"));
this._matchFailed(PEG.StringUtils.quote("+"));
}
}
if (result124 !== null) {
@ -1154,7 +1154,7 @@ PEG.grammarParser = (function(){
} else {
var result128 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("("));
this._matchFailed(PEG.StringUtils.quote("("));
}
}
if (result128 !== null) {
@ -1200,7 +1200,7 @@ PEG.grammarParser = (function(){
} else {
var result132 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure(")"));
this._matchFailed(PEG.StringUtils.quote(")"));
}
}
if (result132 !== null) {
@ -1246,7 +1246,7 @@ PEG.grammarParser = (function(){
} else {
var result136 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("."));
this._matchFailed(PEG.StringUtils.quote("."));
}
}
if (result136 !== null) {
@ -1297,7 +1297,7 @@ PEG.grammarParser = (function(){
} else {
var result149 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("_"));
this._matchFailed(PEG.StringUtils.quote("_"));
}
}
if (result149 !== null) {
@ -1309,7 +1309,7 @@ PEG.grammarParser = (function(){
} else {
var result148 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("$"));
this._matchFailed(PEG.StringUtils.quote("$"));
}
}
if (result148 !== null) {
@ -1335,7 +1335,7 @@ PEG.grammarParser = (function(){
} else {
var result145 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("_"));
this._matchFailed(PEG.StringUtils.quote("_"));
}
}
if (result145 !== null) {
@ -1347,7 +1347,7 @@ PEG.grammarParser = (function(){
} else {
var result144 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("$"));
this._matchFailed(PEG.StringUtils.quote("$"));
}
}
if (result144 !== null) {
@ -1374,7 +1374,7 @@ PEG.grammarParser = (function(){
} else {
var result145 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("_"));
this._matchFailed(PEG.StringUtils.quote("_"));
}
}
if (result145 !== null) {
@ -1386,7 +1386,7 @@ PEG.grammarParser = (function(){
} else {
var result144 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("$"));
this._matchFailed(PEG.StringUtils.quote("$"));
}
}
if (result144 !== null) {
@ -1421,7 +1421,7 @@ PEG.grammarParser = (function(){
: null;
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result138 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("identifier"));
this._matchFailed("identifier");
}
this._cache["identifier"][pos] = {
@ -1472,7 +1472,7 @@ PEG.grammarParser = (function(){
: null;
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result151 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("literal"));
this._matchFailed("literal");
}
this._cache["literal"][pos] = {
@ -1500,7 +1500,7 @@ PEG.grammarParser = (function(){
} else {
var result159 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\""));
this._matchFailed(PEG.StringUtils.quote("\""));
}
}
if (result159 !== null) {
@ -1517,7 +1517,7 @@ PEG.grammarParser = (function(){
} else {
var result161 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\""));
this._matchFailed(PEG.StringUtils.quote("\""));
}
}
if (result161 !== null) {
@ -1620,7 +1620,7 @@ PEG.grammarParser = (function(){
} else {
var result177 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\""));
this._matchFailed(PEG.StringUtils.quote("\""));
}
}
if (result177 !== null) {
@ -1632,7 +1632,7 @@ PEG.grammarParser = (function(){
} else {
var result176 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\"));
this._matchFailed(PEG.StringUtils.quote("\\"));
}
}
if (result176 !== null) {
@ -1660,7 +1660,7 @@ PEG.grammarParser = (function(){
} else {
var result173 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result173 !== null) {
@ -1704,7 +1704,7 @@ PEG.grammarParser = (function(){
} else {
var result180 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("'"));
this._matchFailed(PEG.StringUtils.quote("'"));
}
}
if (result180 !== null) {
@ -1721,7 +1721,7 @@ PEG.grammarParser = (function(){
} else {
var result182 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("'"));
this._matchFailed(PEG.StringUtils.quote("'"));
}
}
if (result182 !== null) {
@ -1824,7 +1824,7 @@ PEG.grammarParser = (function(){
} else {
var result198 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("'"));
this._matchFailed(PEG.StringUtils.quote("'"));
}
}
if (result198 !== null) {
@ -1836,7 +1836,7 @@ PEG.grammarParser = (function(){
} else {
var result197 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\"));
this._matchFailed(PEG.StringUtils.quote("\\"));
}
}
if (result197 !== null) {
@ -1864,7 +1864,7 @@ PEG.grammarParser = (function(){
} else {
var result194 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result194 !== null) {
@ -1909,7 +1909,7 @@ PEG.grammarParser = (function(){
} else {
var result201 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("["));
this._matchFailed(PEG.StringUtils.quote("["));
}
}
if (result201 !== null) {
@ -1919,7 +1919,7 @@ PEG.grammarParser = (function(){
} else {
var result210 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("^"));
this._matchFailed(PEG.StringUtils.quote("^"));
}
}
if (result210 !== null) {
@ -1931,7 +1931,7 @@ PEG.grammarParser = (function(){
} else {
var result209 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure(""));
this._matchFailed(PEG.StringUtils.quote(""));
}
}
if (result209 !== null) {
@ -1974,7 +1974,7 @@ PEG.grammarParser = (function(){
} else {
var result204 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("]"));
this._matchFailed(PEG.StringUtils.quote("]"));
}
}
if (result204 !== null) {
@ -2008,7 +2008,7 @@ PEG.grammarParser = (function(){
: null;
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result199 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("character class"));
this._matchFailed("character class");
}
this._cache["class"][pos] = {
@ -2038,7 +2038,7 @@ PEG.grammarParser = (function(){
} else {
var result214 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("-"));
this._matchFailed(PEG.StringUtils.quote("-"));
}
}
if (result214 !== null) {
@ -2184,7 +2184,7 @@ PEG.grammarParser = (function(){
} else {
var result232 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("]"));
this._matchFailed(PEG.StringUtils.quote("]"));
}
}
if (result232 !== null) {
@ -2196,7 +2196,7 @@ PEG.grammarParser = (function(){
} else {
var result231 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\"));
this._matchFailed(PEG.StringUtils.quote("\\"));
}
}
if (result231 !== null) {
@ -2224,7 +2224,7 @@ PEG.grammarParser = (function(){
} else {
var result228 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result228 !== null) {
@ -2268,7 +2268,7 @@ PEG.grammarParser = (function(){
} else {
var result235 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\"));
this._matchFailed(PEG.StringUtils.quote("\\"));
}
}
if (result235 !== null) {
@ -2285,7 +2285,7 @@ PEG.grammarParser = (function(){
} else {
var result241 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("x"));
this._matchFailed(PEG.StringUtils.quote("x"));
}
}
if (result241 !== null) {
@ -2297,7 +2297,7 @@ PEG.grammarParser = (function(){
} else {
var result240 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("u"));
this._matchFailed(PEG.StringUtils.quote("u"));
}
}
if (result240 !== null) {
@ -2326,7 +2326,7 @@ PEG.grammarParser = (function(){
} else {
var result237 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result237 !== null) {
@ -2382,7 +2382,7 @@ PEG.grammarParser = (function(){
} else {
var result245 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\0"));
this._matchFailed(PEG.StringUtils.quote("\\0"));
}
}
if (result245 !== null) {
@ -2438,7 +2438,7 @@ PEG.grammarParser = (function(){
} else {
var result250 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\x"));
this._matchFailed(PEG.StringUtils.quote("\\x"));
}
}
if (result250 !== null) {
@ -2492,7 +2492,7 @@ PEG.grammarParser = (function(){
} else {
var result255 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\u"));
this._matchFailed(PEG.StringUtils.quote("\\u"));
}
}
if (result255 !== null) {
@ -2558,7 +2558,7 @@ PEG.grammarParser = (function(){
} else {
var result262 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\\"));
this._matchFailed(PEG.StringUtils.quote("\\"));
}
}
if (result262 !== null) {
@ -2603,7 +2603,7 @@ PEG.grammarParser = (function(){
} else {
var result264 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("0-9"));
this._matchFailed('[' + "0-9" + ']');
}
}
@ -2633,7 +2633,7 @@ PEG.grammarParser = (function(){
} else {
var result265 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("0-9a-fA-F"));
this._matchFailed('[' + "0-9a-fA-F" + ']');
}
}
@ -2695,7 +2695,7 @@ PEG.grammarParser = (function(){
} else {
var result269 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("a-z"));
this._matchFailed('[' + "a-z" + ']');
}
}
@ -2725,7 +2725,7 @@ PEG.grammarParser = (function(){
} else {
var result270 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("A-Z"));
this._matchFailed('[' + "A-Z" + ']');
}
}
@ -2820,7 +2820,7 @@ PEG.grammarParser = (function(){
}
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result276 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("comment"));
this._matchFailed("comment");
}
this._cache["comment"][pos] = {
@ -2848,7 +2848,7 @@ PEG.grammarParser = (function(){
} else {
var result280 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("//"));
this._matchFailed(PEG.StringUtils.quote("//"));
}
}
if (result280 !== null) {
@ -2872,7 +2872,7 @@ PEG.grammarParser = (function(){
} else {
var result284 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result284 !== null) {
@ -2906,7 +2906,7 @@ PEG.grammarParser = (function(){
} else {
var result284 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result284 !== null) {
@ -2958,7 +2958,7 @@ PEG.grammarParser = (function(){
} else {
var result287 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("/*"));
this._matchFailed(PEG.StringUtils.quote("/*"));
}
}
if (result287 !== null) {
@ -2973,7 +2973,7 @@ PEG.grammarParser = (function(){
} else {
var result293 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("*/"));
this._matchFailed(PEG.StringUtils.quote("*/"));
}
}
context.reportMatchFailures = savedReportMatchFailuresVar7;
@ -2990,7 +2990,7 @@ PEG.grammarParser = (function(){
} else {
var result292 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result292 !== null) {
@ -3015,7 +3015,7 @@ PEG.grammarParser = (function(){
} else {
var result293 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("*/"));
this._matchFailed(PEG.StringUtils.quote("*/"));
}
}
context.reportMatchFailures = savedReportMatchFailuresVar7;
@ -3032,7 +3032,7 @@ PEG.grammarParser = (function(){
} else {
var result292 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.AnyMatchFailure());
this._matchFailed('any character');
}
}
if (result292 !== null) {
@ -3053,7 +3053,7 @@ PEG.grammarParser = (function(){
} else {
var result289 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("*/"));
this._matchFailed(PEG.StringUtils.quote("*/"));
}
}
if (result289 !== null) {
@ -3098,7 +3098,7 @@ PEG.grammarParser = (function(){
} else {
var result299 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\n"));
this._matchFailed(PEG.StringUtils.quote("\n"));
}
}
if (result299 !== null) {
@ -3110,7 +3110,7 @@ PEG.grammarParser = (function(){
} else {
var result298 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\r\n"));
this._matchFailed(PEG.StringUtils.quote("\r\n"));
}
}
if (result298 !== null) {
@ -3122,7 +3122,7 @@ PEG.grammarParser = (function(){
} else {
var result297 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\r"));
this._matchFailed(PEG.StringUtils.quote("\r"));
}
}
if (result297 !== null) {
@ -3134,7 +3134,7 @@ PEG.grammarParser = (function(){
} else {
var result296 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\u2028"));
this._matchFailed(PEG.StringUtils.quote("\u2028"));
}
}
if (result296 !== null) {
@ -3146,7 +3146,7 @@ PEG.grammarParser = (function(){
} else {
var result295 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.LiteralMatchFailure("\u2029"));
this._matchFailed(PEG.StringUtils.quote("\u2029"));
}
}
if (result295 !== null) {
@ -3160,7 +3160,7 @@ PEG.grammarParser = (function(){
}
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result294 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("end of line"));
this._matchFailed("end of line");
}
this._cache["eol"][pos] = {
@ -3187,7 +3187,7 @@ PEG.grammarParser = (function(){
} else {
var result300 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("\\n\\r\\u2028\\u2029"));
this._matchFailed('[' + "\\n\\r\\u2028\\u2029" + ']');
}
}
@ -3218,12 +3218,12 @@ PEG.grammarParser = (function(){
} else {
var result301 = null;
if (context.reportMatchFailures) {
this._matchFailed(new PEG.Parser.ClassMatchFailure("   ᠎ -    "));
this._matchFailed('[' + "   ᠎ -    " + ']');
}
}
context.reportMatchFailures = savedReportMatchFailures;
if (context.reportMatchFailures && result301 === null) {
this._matchFailed(new PEG.Parser.NamedRuleMatchFailure("whitespace"));
this._matchFailed("whitespace");
}
this._cache["whitespace"][pos] = {

73
lib/runtime.js

@ -91,9 +91,9 @@ PEG.Parser.prototype = {
_matchFailed: function(failure) {
if (this._pos > this._rightmostMatchFailuresPos) {
this._rightmostMatchFailuresPos = this._pos;
this._rightmostMatchFailures = [];
this._rightmostMatchFailuresExpected = [];
}
this._rightmostMatchFailures.push(failure);
this._rightmostMatchFailuresExpected.push(failure);
},
/*
@ -109,30 +109,25 @@ PEG.Parser.prototype = {
that._input = input;
that._pos = 0;
that._rightmostMatchFailuresPos = 0;
that._rightmostMatchFailures = [];
that._rightmostMatchFailuresExpected = [];
that._cache = {};
}
function buildErrorMessage() {
function buildExpectedFromMatchFailures(failures) {
switch (failures.length) {
function buildExpected(failuresExpected) {
switch (failuresExpected.length) {
case 0:
return "end of input";
case 1:
return failures[0].toString();
return failuresExpected[0];
default:
return PEG.ArrayUtils.map(
failures.slice(0, failures.length - 1),
function(failure) { return failure.toString(); }
).join(", ")
return failuresExpected.slice(0, failuresExpected.length - 1).join(", ")
+ " or "
+ failures[failures.length - 1].toString();
+ failuresExpected[failuresExpected.length - 1];
}
}
var expected = buildExpectedFromMatchFailures(
that._rightmostMatchFailures
);
var expected = buildExpected(that._rightmostMatchFailuresExpected);
var pos = Math.max(that._pos, that._rightmostMatchFailuresPos);
var actual = pos < that._input.length
? PEG.StringUtils.quote(that._input.charAt(pos))
@ -189,21 +184,21 @@ PEG.Parser.prototype = {
*
* - |result !== null|
* - |that._pos === input.length|
* - |that._rightmostMatchFailures.length| may or may not contain
* - |that._rightmostMatchFailuresExpected.length| may or may not contain
* something
*
* 2. The parser successfully parsed only a part of the input.
*
* - |result !== null|
* - |that._pos < input.length|
* - |that._rightmostMatchFailures.length| may or may not contain
* - |that._rightmostMatchFailuresExpected.length| may or may not contain
* something
*
* 3. The parser did not successfully parse any part of the input.
*
* - |result === null|
* - |that._pos === 0|
* - |that._rightmostMatchFailures.length| contains at least one failure
* - |that._rightmostMatchFailuresExpected.length| contains at least one failure
*
* All code following this comment (including called functions) must
* handle these states.
@ -224,50 +219,6 @@ PEG.Parser.prototype = {
toSource: function() { return this._source; }
};
/* ===== PEG.Parser.LiteralMatchFailure ===== */
/* Stores information about a literal match failure. */
PEG.Parser.LiteralMatchFailure = function(value) { this._value = value; };
PEG.Parser.LiteralMatchFailure.prototype = {
toString: function() { return PEG.StringUtils.quote(this._value); }
};
/* ===== PEG.Parser.ClassMatchFailure ===== */
/* Stores information about a class match failure. */
PEG.Parser.ClassMatchFailure = function(characters) {
this._characters = characters;
};
PEG.Parser.ClassMatchFailure.prototype = {
toString: function() { return "[" + this._characters + "]"; }
};
/* ===== PEG.Parser.AnyMatchFailure ===== */
/* Stores information about a failure to match a "." expression. */
PEG.Parser.AnyMatchFailure = function() {}
PEG.Parser.AnyMatchFailure.prototype = {
toString: function() { return "any character"; }
};
/* ===== PEG.Parser.NamedRuleMatchFailure ===== */
/* Stores information about a failure to match a named rule. */
PEG.Parser.NamedRuleMatchFailure = function(displayName) {
this._displayName = displayName;
}
PEG.Parser.NamedRuleMatchFailure.prototype = {
toString: function() { return this._displayName; }
};
/* ===== PEG.Parser.SyntaxError ===== */
/* Thrown when a parser encounters a syntax error. */

Loading…
Cancel
Save