jisonify

Browserify plugin for Jison parsers.

Jisonify

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">&ndash;</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(errsrc) {
  // ... 
});

Copyright © 2014 Chris Schmich
MIT License, See LICENSE for details.