scribble-math/jisonify.js
Ben Alpert 4bc599966f Create node server to replace 'make watch'
Reviewers: xymostech

Reviewed By: xymostech

Differential Revision: http://phabricator.benalpert.com/D38
2013-07-05 22:55:10 -07:00

32 lines
761 B
JavaScript

var ebnfParser = require("ebnf-parser");
var jison = require("jison");
var through = require("through");
module.exports = function(file) {
if (!(/\.jison$/).test(file)) {
return through();
}
var data = '';
return through(write, end);
function write(buf) {
data += buf;
}
function end() {
try {
var grammar = ebnfParser.parse(data);
var parser = new jison.Parser(grammar);
var js = parser.generate({moduleType: "js"});
js += "\nmodule.exports = parser;";
this.queue(js);
this.queue(null);
} catch (e) {
// TODO(alpert): Does this do anything? (Is it useful?)
this.emit("error", e);
}
}
};