Use |charAt| instead of |substr| when matching classes

Speed impact
------------
Before:     131.36 kB/s
After:      213.59 kB/s
Difference: 62.59%

Size impact
-----------
Before:     1056976 b
After:      1056976 b
Difference: 0.00%

(Measured by /tools/impact with Node.js v0.4.8 on x86_64 GNU/Linux.)

Closes GH-49.
redux
David Majda 13 years ago
parent 0a1cea5f12
commit d3aff0c66a

@ -753,7 +753,7 @@ PEG.compiler.emitter = function(ast) {
}
return formatCode(
"if (${regexp}.test(input.substr(pos))) {",
"if (${regexp}.test(input.charAt(pos))) {",
" ${resultVar} = input.charAt(pos);",
" pos++;",
"} else {",

@ -1123,7 +1123,7 @@ PEG.parser = (function(){
var pos0;
if (/^[^{}]/.test(input.substr(pos))) {
if (/^[^{}]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3023,7 +3023,7 @@ PEG.parser = (function(){
var pos0;
if (/^[0-9]/.test(input.substr(pos))) {
if (/^[0-9]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3054,7 +3054,7 @@ PEG.parser = (function(){
var pos0;
if (/^[0-9a-fA-F]/.test(input.substr(pos))) {
if (/^[0-9a-fA-F]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3112,7 +3112,7 @@ PEG.parser = (function(){
var pos0;
if (/^[a-z]/.test(input.substr(pos))) {
if (/^[a-z]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3143,7 +3143,7 @@ PEG.parser = (function(){
var pos0;
if (/^[A-Z]/.test(input.substr(pos))) {
if (/^[A-Z]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3571,7 +3571,7 @@ PEG.parser = (function(){
var pos0;
if (/^[\n\r\u2028\u2029]/.test(input.substr(pos))) {
if (/^[\n\r\u2028\u2029]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3602,7 +3602,7 @@ PEG.parser = (function(){
var pos0;
reportFailures++;
if (/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(input.substr(pos))) {
if (/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {

Loading…
Cancel
Save