Refactor "action" emitter function a bit

redux
David Majda 13 years ago
parent 50a0371e2d
commit b5ca96dd48

@ -809,11 +809,6 @@ PEG.compiler.emitter = function(ast) {
* This behavior is reflected in this function. * This behavior is reflected in this function.
*/ */
var expressionContext = {
resultIndex: context.resultIndex,
posIndex: context.posIndex + 1
};
var formalParams; var formalParams;
var actualParams; var actualParams;
@ -841,16 +836,19 @@ PEG.compiler.emitter = function(ast) {
'#{posVar} = pos;', '#{posVar} = pos;',
'#block expressionCode', '#block expressionCode',
'if (#{resultVar} !== null) {', 'if (#{resultVar} !== null) {',
' #{resultVar} = (function(#{formalParams}) {#{actionCode}})(#{actualParams});', ' #{resultVar} = (function(#{formalParams.join(", ")}) {#{node.code}})(#{actualParams.join(", ")});',
'}', '}',
'if (#{resultVar} === null) {', 'if (#{resultVar} === null) {',
' pos = #{posVar};', ' pos = #{posVar};',
'}', '}',
{ {
expressionCode: emit(node.expression, expressionContext), node: node,
actionCode: node.code, expressionCode: emit(node.expression, {
formalParams: formalParams.join(', '), resultIndex: context.resultIndex,
actualParams: actualParams.join(', '), posIndex: context.posIndex + 1
}),
formalParams: formalParams,
actualParams: actualParams,
posVar: posVar(context.posIndex), posVar: posVar(context.posIndex),
resultVar: resultVar(context.resultIndex) resultVar: resultVar(context.resultIndex)
} }

Loading…
Cancel
Save