Do not compute |resultIndex| for "rule" nodes

Computing |resultIndex| for their expressions is enough.
redux
David Majda 12 years ago
parent 2d36ebeb59
commit a1fd6acc92

@ -42,7 +42,6 @@ PEG.compiler.passes.allocateRegisters = function(ast) {
grammar: grammar:
function(node, index) { function(node, index) {
each(node.rules, function(node) { each(node.rules, function(node) {
node.resultIndex = index;
compute(node, index); compute(node, index);
}); });
}, },
@ -51,7 +50,7 @@ PEG.compiler.passes.allocateRegisters = function(ast) {
function(node, index) { function(node, index) {
var depth; var depth;
node.expression.resultIndex = node.resultIndex; node.expression.resultIndex = index;
depth = compute(node.expression, index); depth = compute(node.expression, index);

@ -567,10 +567,10 @@ PEG.compiler.passes.generateCode = function(ast, options) {
' ', ' ',
' cache[cacheKey] = {', ' cache[cacheKey] = {',
' nextPos: #{posClone("pos")},', ' nextPos: #{posClone("pos")},',
' result: #{r(node.resultIndex)}', ' result: #{r(node.expression.resultIndex)}',
' };', ' };',
' #end', ' #end',
' return #{r(node.resultIndex)};', ' return #{r(node.expression.resultIndex)};',
'}' '}'
], ],
named: [ named: [

Loading…
Cancel
Save