diff --git a/src/emitter.js b/src/emitter.js index 74ef92d..34e3157 100644 --- a/src/emitter.js +++ b/src/emitter.js @@ -710,6 +710,14 @@ PEG.compiler.emitter = function(ast) { literal: function(node, context) { var length = node.value.length; + + if (length === 0) { + return formatCode( + "${resultVar} = '';", + { resultVar: resultVar(context.resultIndex) } + ); + } + var testCode = length === 1 ? formatCode( "input.charCodeAt(pos) === ${valueCharCode}", diff --git a/src/parser.js b/src/parser.js index d065c46..11a156a 100644 --- a/src/parser.js +++ b/src/parser.js @@ -280,15 +280,7 @@ PEG.parser = (function(){ if (result0 !== null) { result1 = parse_literal(); if (result1 === null) { - if (input.substr(pos, 0) === "") { - result1 = ""; - pos += 0; - } else { - result1 = null; - if (reportFailures === 0) { - matchFailed("\"\""); - } - } + result1 = ''; } if (result1 !== null) { @@ -837,15 +829,7 @@ PEG.parser = (function(){ pos3 = pos; result1 = parse_literal(); if (result1 === null) { - if (input.substr(pos, 0) === "") { - result1 = ""; - pos += 0; - } else { - result1 = null; - if (reportFailures === 0) { - matchFailed("\"\""); - } - } + result1 = ''; } if (result1 !== null) {