diff --git a/README.md b/README.md index 4151146..68b1f4c 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ object to `PEG.buildParser`. The following options are supported: (default: `"parser"`) * `optimize`— selects between optimizing the generated parser for parsing speed (`"speed"`) or code size (`"size"`) (default: `"speed"`) + * `plugins` — plugins to use Using the Parser ---------------- diff --git a/lib/peg.js b/lib/peg.js index 56efd57..0410c29 100644 --- a/lib/peg.js +++ b/lib/peg.js @@ -19,10 +19,19 @@ module.exports = { * errors are detected during the generation and some may protrude to the * generated parser and cause its malfunction. */ - buildParser: function(grammar, options) { + buildParser: function(grammar) { + var options = arguments.length > 1 ? utils.clone(arguments[1]) : {}, + plugins = "plugins" in options ? options.plugins : [], + config = { + parser: this.parser, + passes: utils.values(this.compiler.passes) + }; + + utils.each(plugins, function(p) { p.use(config, options); }); + return this.compiler.compile( - this.parser.parse(grammar), - utils.values(this.compiler.passes), + config.parser.parse(grammar), + config.passes, options ); }