Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Avoid quoting when reporting errors for literals

This is a small win performance-wise.

Results of benchmark with 100 runs on V8:

  Before:  31.65 kB/s
  After:   32.83 kB/s
  Speedup: 3.728 %

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like
Gecko) Chrome/5.0.375.127 Safari/533.4
  • Loading branch information...
commit b6288a8d9c2880d1284842c4feb43ca38f57c7e6 1 parent c8836c0
@dmajda dmajda authored
Showing with 58 additions and 57 deletions.
  1. +5 −4 src/emitter.js
  2. +53 −53 src/parser.js
View
9 src/emitter.js
@@ -644,13 +644,14 @@ PEG.compiler.emitter = function(ast) {
"} else {",
" var ${resultVar} = null;",
" if (reportMatchFailures) {",
- " matchFailed(quote(${value|string}));",
+ " matchFailed(${valueQuoted|string});",
" }",
"}",
{
- value: node.value,
- length: node.value.length,
- resultVar: resultVar
+ value: node.value,
+ valueQuoted: quote(node.value),
+ length: node.value.length,
+ resultVar: resultVar
}
);
},
View
106 src/parser.js
@@ -187,7 +187,7 @@ PEG.parser = (function(){
} else {
var result8 = null;
if (reportMatchFailures) {
- matchFailed(quote(""));
+ matchFailed("\"\"");
}
}
if (result8 !== null) {
@@ -719,7 +719,7 @@ PEG.parser = (function(){
} else {
var result18 = null;
if (reportMatchFailures) {
- matchFailed(quote(""));
+ matchFailed("\"\"");
}
}
if (result18 !== null) {
@@ -888,7 +888,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("{"));
+ matchFailed("\"{\"");
}
}
if (result2 !== null) {
@@ -925,7 +925,7 @@ PEG.parser = (function(){
} else {
var result4 = null;
if (reportMatchFailures) {
- matchFailed(quote("}"));
+ matchFailed("\"}\"");
}
}
if (result4 !== null) {
@@ -1033,7 +1033,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("="));
+ matchFailed("\"=\"");
}
}
if (result2 !== null) {
@@ -1077,7 +1077,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote(":"));
+ matchFailed("\":\"");
}
}
if (result2 !== null) {
@@ -1121,7 +1121,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote(";"));
+ matchFailed("\";\"");
}
}
if (result2 !== null) {
@@ -1165,7 +1165,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("/"));
+ matchFailed("\"/\"");
}
}
if (result2 !== null) {
@@ -1209,7 +1209,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("&"));
+ matchFailed("\"&\"");
}
}
if (result2 !== null) {
@@ -1253,7 +1253,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("!"));
+ matchFailed("\"!\"");
}
}
if (result2 !== null) {
@@ -1297,7 +1297,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("?"));
+ matchFailed("\"?\"");
}
}
if (result2 !== null) {
@@ -1341,7 +1341,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("*"));
+ matchFailed("\"*\"");
}
}
if (result2 !== null) {
@@ -1385,7 +1385,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("+"));
+ matchFailed("\"+\"");
}
}
if (result2 !== null) {
@@ -1429,7 +1429,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("("));
+ matchFailed("\"(\"");
}
}
if (result2 !== null) {
@@ -1473,7 +1473,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote(")"));
+ matchFailed("\")\"");
}
}
if (result2 !== null) {
@@ -1517,7 +1517,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("."));
+ matchFailed("\".\"");
}
}
if (result2 !== null) {
@@ -1566,7 +1566,7 @@ PEG.parser = (function(){
} else {
var result11 = null;
if (reportMatchFailures) {
- matchFailed(quote("_"));
+ matchFailed("\"_\"");
}
}
if (result11 !== null) {
@@ -1578,7 +1578,7 @@ PEG.parser = (function(){
} else {
var result10 = null;
if (reportMatchFailures) {
- matchFailed(quote("$"));
+ matchFailed("\"$\"");
}
}
if (result10 !== null) {
@@ -1604,7 +1604,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("_"));
+ matchFailed("\"_\"");
}
}
if (result7 !== null) {
@@ -1616,7 +1616,7 @@ PEG.parser = (function(){
} else {
var result6 = null;
if (reportMatchFailures) {
- matchFailed(quote("$"));
+ matchFailed("\"$\"");
}
}
if (result6 !== null) {
@@ -1643,7 +1643,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("_"));
+ matchFailed("\"_\"");
}
}
if (result7 !== null) {
@@ -1655,7 +1655,7 @@ PEG.parser = (function(){
} else {
var result6 = null;
if (reportMatchFailures) {
- matchFailed(quote("$"));
+ matchFailed("\"$\"");
}
}
if (result6 !== null) {
@@ -1765,7 +1765,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\""));
+ matchFailed("\"\\\"\"");
}
}
if (result2 !== null) {
@@ -1782,7 +1782,7 @@ PEG.parser = (function(){
} else {
var result4 = null;
if (reportMatchFailures) {
- matchFailed(quote("\""));
+ matchFailed("\"\\\"\"");
}
}
if (result4 !== null) {
@@ -1881,7 +1881,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("\""));
+ matchFailed("\"\\\"\"");
}
}
if (result7 !== null) {
@@ -1893,7 +1893,7 @@ PEG.parser = (function(){
} else {
var result6 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\"));
+ matchFailed("\"\\\\\"");
}
}
if (result6 !== null) {
@@ -1963,7 +1963,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("'"));
+ matchFailed("\"'\"");
}
}
if (result2 !== null) {
@@ -1980,7 +1980,7 @@ PEG.parser = (function(){
} else {
var result4 = null;
if (reportMatchFailures) {
- matchFailed(quote("'"));
+ matchFailed("\"'\"");
}
}
if (result4 !== null) {
@@ -2079,7 +2079,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("'"));
+ matchFailed("\"'\"");
}
}
if (result7 !== null) {
@@ -2091,7 +2091,7 @@ PEG.parser = (function(){
} else {
var result6 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\"));
+ matchFailed("\"\\\\\"");
}
}
if (result6 !== null) {
@@ -2162,7 +2162,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("["));
+ matchFailed("\"[\"");
}
}
if (result2 !== null) {
@@ -2172,7 +2172,7 @@ PEG.parser = (function(){
} else {
var result10 = null;
if (reportMatchFailures) {
- matchFailed(quote("^"));
+ matchFailed("\"^\"");
}
}
var result3 = result10 !== null ? result10 : '';
@@ -2210,7 +2210,7 @@ PEG.parser = (function(){
} else {
var result5 = null;
if (reportMatchFailures) {
- matchFailed(quote("]"));
+ matchFailed("\"]\"");
}
}
if (result5 !== null) {
@@ -2284,7 +2284,7 @@ PEG.parser = (function(){
} else {
var result3 = null;
if (reportMatchFailures) {
- matchFailed(quote("-"));
+ matchFailed("\"-\"");
}
}
if (result3 !== null) {
@@ -2426,7 +2426,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("]"));
+ matchFailed("\"]\"");
}
}
if (result7 !== null) {
@@ -2438,7 +2438,7 @@ PEG.parser = (function(){
} else {
var result6 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\"));
+ matchFailed("\"\\\\\"");
}
}
if (result6 !== null) {
@@ -2508,7 +2508,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\"));
+ matchFailed("\"\\\\\"");
}
}
if (result2 !== null) {
@@ -2525,7 +2525,7 @@ PEG.parser = (function(){
} else {
var result8 = null;
if (reportMatchFailures) {
- matchFailed(quote("x"));
+ matchFailed("\"x\"");
}
}
if (result8 !== null) {
@@ -2537,7 +2537,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("u"));
+ matchFailed("\"u\"");
}
}
if (result7 !== null) {
@@ -2620,7 +2620,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\0"));
+ matchFailed("\"\\\\0\"");
}
}
if (result2 !== null) {
@@ -2674,7 +2674,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\x"));
+ matchFailed("\"\\\\x\"");
}
}
if (result2 !== null) {
@@ -2726,7 +2726,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\u"));
+ matchFailed("\"\\\\u\"");
}
}
if (result2 !== null) {
@@ -2790,7 +2790,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\\"));
+ matchFailed("\"\\\\\"");
}
}
if (result2 !== null) {
@@ -3064,7 +3064,7 @@ PEG.parser = (function(){
} else {
var result1 = null;
if (reportMatchFailures) {
- matchFailed(quote("//"));
+ matchFailed("\"//\"");
}
}
if (result1 !== null) {
@@ -3172,7 +3172,7 @@ PEG.parser = (function(){
} else {
var result1 = null;
if (reportMatchFailures) {
- matchFailed(quote("/*"));
+ matchFailed("\"/*\"");
}
}
if (result1 !== null) {
@@ -3187,7 +3187,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("*/"));
+ matchFailed("\"*/\"");
}
}
reportMatchFailures = savedReportMatchFailuresVar0;
@@ -3229,7 +3229,7 @@ PEG.parser = (function(){
} else {
var result7 = null;
if (reportMatchFailures) {
- matchFailed(quote("*/"));
+ matchFailed("\"*/\"");
}
}
reportMatchFailures = savedReportMatchFailuresVar0;
@@ -3267,7 +3267,7 @@ PEG.parser = (function(){
} else {
var result3 = null;
if (reportMatchFailures) {
- matchFailed(quote("*/"));
+ matchFailed("\"*/\"");
}
}
if (result3 !== null) {
@@ -3310,7 +3310,7 @@ PEG.parser = (function(){
} else {
var result5 = null;
if (reportMatchFailures) {
- matchFailed(quote("\n"));
+ matchFailed("\"\\n\"");
}
}
if (result5 !== null) {
@@ -3322,7 +3322,7 @@ PEG.parser = (function(){
} else {
var result4 = null;
if (reportMatchFailures) {
- matchFailed(quote("\r\n"));
+ matchFailed("\"\\r\\n\"");
}
}
if (result4 !== null) {
@@ -3334,7 +3334,7 @@ PEG.parser = (function(){
} else {
var result3 = null;
if (reportMatchFailures) {
- matchFailed(quote("\r"));
+ matchFailed("\"\\r\"");
}
}
if (result3 !== null) {
@@ -3346,7 +3346,7 @@ PEG.parser = (function(){
} else {
var result2 = null;
if (reportMatchFailures) {
- matchFailed(quote("\u2028"));
+ matchFailed("\"\\u2028\"");
}
}
if (result2 !== null) {
@@ -3358,7 +3358,7 @@ PEG.parser = (function(){
} else {
var result1 = null;
if (reportMatchFailures) {
- matchFailed(quote("\u2029"));
+ matchFailed("\"\\u2029\"");
}
}
if (result1 !== null) {
Please sign in to comment.
Something went wrong with that request. Please try again.