You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
906 B
JavaScript

var utils = require("./utils");
module.exports = {
passes: require("./compiler/passes"),
/*
* Names of passes that will get run during the compilation (in the specified
* order).
*/
appliedPassNames: [
"reportMissingRules",
"reportLeftRecursion",
"removeProxyRules",
"allocateRegisters",
"generateCode"
],
/*
* Generates a parser from a specified grammar AST. Throws |PEG.GrammarError|
* if the AST contains a semantic error. Note that not all errors are detected
* during the generation and some may protrude to the generated parser and
* cause its malfunction.
*/
compile: function(ast, options) {
var that = this;
utils.each(this.appliedPassNames, function(passName) {
that.passes[passName](ast, options);
});
var source = ast.code;
var result = eval(source);
result._source = source;
return result;
}
};