|
|
|
@ -993,23 +993,19 @@ PEG.Grammar.RuleRef.prototype.compile = function(resultVar) {
|
|
|
|
|
PEG.Grammar.Action.prototype.compile = function(resultVar) {
|
|
|
|
|
var expressionResultVar = PEG.Compiler.generateUniqueIdentifier("result");
|
|
|
|
|
|
|
|
|
|
if (typeof(this._action) === "function") {
|
|
|
|
|
var actionFunction = this._action.toString();
|
|
|
|
|
} else {
|
|
|
|
|
var actionCode = this._action.replace(
|
|
|
|
|
/\$(\d+)/g,
|
|
|
|
|
function(match, digits) {
|
|
|
|
|
return PEG.Compiler.formatCode(
|
|
|
|
|
"(arguments[${index}])",
|
|
|
|
|
{ index: parseInt(digits) - 1 }
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
var actionFunction = PEG.Compiler.formatCode(
|
|
|
|
|
"function() { ${actionCode} }",
|
|
|
|
|
{ actionCode: actionCode }
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
var actionCode = this._action.replace(
|
|
|
|
|
/\$(\d+)/g,
|
|
|
|
|
function(match, digits) {
|
|
|
|
|
return PEG.Compiler.formatCode(
|
|
|
|
|
"(arguments[${index}])",
|
|
|
|
|
{ index: parseInt(digits) - 1 }
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
var actionFunction = PEG.Compiler.formatCode(
|
|
|
|
|
"function() { ${actionCode} }",
|
|
|
|
|
{ actionCode: actionCode }
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* In case of sequences, we splat their elements into function arguments one
|
|
|
|
|