Fix matching of case-instensitive literals

Code that calculated which part of the input to match against a literal
was wrong in case of case-insensitive literals when generating
speed-optimized parsers. As a result, matching of case-insensitive
literals worked only at the end of the input (where too big length
passed to the |substr| method didn't matter).

Fixes GH-153.
redux
David Majda 11 years ago
parent 0df8989f7a
commit 34fe2c01ae

@ -546,7 +546,7 @@ module.exports = function(ast, options) {
case op.MATCH_STRING_IC: // MATCH_STRING_IC s, a, f, ... case op.MATCH_STRING_IC: // MATCH_STRING_IC s, a, f, ...
compileCondition( compileCondition(
'input.substr(peg$currPos, ' 'input.substr(peg$currPos, '
+ ast.consts[bc[ip + 1]].length + eval(ast.consts[bc[ip + 1]]).length
+ ').toLowerCase() === ' + ').toLowerCase() === '
+ c(bc[ip + 1]), + c(bc[ip + 1]),
1 1

Loading…
Cancel
Save