From 9615eb4bb64a00392acac4550a80a32597604ea1 Mon Sep 17 00:00:00 2001 From: David Majda Date: Mon, 27 Feb 2012 20:24:07 +0100 Subject: [PATCH] Allow passing options to |PEG.buildParser| These get passed down to the emitter templates. --- src/compiler.js | 4 ++-- src/emitter.js | 15 +++++++++------ src/peg.js | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index d473cc4..8c4a474 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -17,14 +17,14 @@ PEG.compiler = { * during the generation and some may protrude to the generated parser and * cause its malfunction. */ - compile: function(ast) { + compile: function(ast, options) { var that = this; each(this.appliedPassNames, function(passName) { that.passes[passName](ast); }); - var source = this.emitter(ast); + var source = this.emitter(ast, options); var result = eval(source); result._source = source; diff --git a/src/emitter.js b/src/emitter.js index 5270066..58b47bf 100644 --- a/src/emitter.js +++ b/src/emitter.js @@ -1,5 +1,7 @@ /* Emits the generated code for the AST. */ -PEG.compiler.emitter = function(ast) { +PEG.compiler.emitter = function(ast, options) { + options = options || {}; + var Codie = (function(undefined) { function stringEscape(s) { function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } @@ -674,11 +676,12 @@ PEG.compiler.emitter = function(ast) { })(); function fill(name, vars) { - vars.string = quote; - vars.pluck = pluck; - vars.keys = keys; - vars.values = values; - vars.emit = emit; + vars.string = quote; + vars.pluck = pluck; + vars.keys = keys; + vars.values = values; + vars.emit = emit; + vars.options = options; return templates[name](vars); } diff --git a/src/peg.js b/src/peg.js index fe00f5b..9d385bd 100644 --- a/src/peg.js +++ b/src/peg.js @@ -17,8 +17,8 @@ var PEG = { * errors are detected during the generation and some may protrude to the * generated parser and cause its malfunction. */ - buildParser: function(grammar) { - return PEG.compiler.compile(PEG.parser.parse(grammar)); + buildParser: function(grammar, options) { + return PEG.compiler.compile(PEG.parser.parse(grammar), options); } };