A Browserify transform for Jison parsers.
Mix Jison parsers into your JS files and Browserify projects without needing additional build steps.
npm install jisonify
browserify -t jisonify main.js > bundle.js
// calc.jison
%lex
%%
\s+ /* Skip whitespace. */
[0-9]+ return 'NUMBER'
"-" return '-'
"+" return '+'
<<EOF>> return 'EOF'
. return 'INVALID'
/lex
%left '+' '-'
%start expressions
%%
expressions
: expr EOF { return $1; }
;
expr
: expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
| NUMBER { $$ = Number(yytext); }
;
// main.js
var parser = require('./calc.jison').parser;
exports = run = function() {
var input = document.getElementById('input');
var output = document.getElementById('output');
output.innerText = parser.parse(input.value);
};
browserify -t jisonify main.js > bundle.js
<!-- calc.html -->
<!DOCTYPE html>
<html>
<head>
<script src="bundle.js"></script>
</head>
<body>
<form onsubmit="run(); return false;">
<input type="text" id="input" value="50 + 2 - 10" />
<input type="submit" />
Result: <span id="output">–</span>
</form>
</body>
</html>
var browserify = require('browserify');
var jisonify = require('jisonify');
var b = browserify();
b.add('./main.js');
b.transform(jisonify);
b.bundle(function(err, src) {
// ...
});
Copyright © 2014 Chris Schmich
MIT License, See LICENSE for details.