Allow passing options to |PEG.buildParser|

These get passed down to the emitter templates.
redux
David Majda 12 years ago
parent f2f88b87ea
commit 9615eb4bb6

@ -17,14 +17,14 @@ PEG.compiler = {
* during the generation and some may protrude to the generated parser and * during the generation and some may protrude to the generated parser and
* cause its malfunction. * cause its malfunction.
*/ */
compile: function(ast) { compile: function(ast, options) {
var that = this; var that = this;
each(this.appliedPassNames, function(passName) { each(this.appliedPassNames, function(passName) {
that.passes[passName](ast); that.passes[passName](ast);
}); });
var source = this.emitter(ast); var source = this.emitter(ast, options);
var result = eval(source); var result = eval(source);
result._source = source; result._source = source;

@ -1,5 +1,7 @@
/* Emits the generated code for the AST. */ /* Emits the generated code for the AST. */
PEG.compiler.emitter = function(ast) { PEG.compiler.emitter = function(ast, options) {
options = options || {};
var Codie = (function(undefined) { var Codie = (function(undefined) {
function stringEscape(s) { function stringEscape(s) {
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
@ -674,11 +676,12 @@ PEG.compiler.emitter = function(ast) {
})(); })();
function fill(name, vars) { function fill(name, vars) {
vars.string = quote; vars.string = quote;
vars.pluck = pluck; vars.pluck = pluck;
vars.keys = keys; vars.keys = keys;
vars.values = values; vars.values = values;
vars.emit = emit; vars.emit = emit;
vars.options = options;
return templates[name](vars); return templates[name](vars);
} }

@ -17,8 +17,8 @@ var PEG = {
* errors are detected during the generation and some may protrude to the * errors are detected during the generation and some may protrude to the
* generated parser and cause its malfunction. * generated parser and cause its malfunction.
*/ */
buildParser: function(grammar) { buildParser: function(grammar, options) {
return PEG.compiler.compile(PEG.parser.parse(grammar)); return PEG.compiler.compile(PEG.parser.parse(grammar), options);
} }
}; };

Loading…
Cancel
Save