schmich / jisonify

A Browserify transform for Jison parsers.

Home Page:https://npmjs.org/package/jisonify

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Jisonify

A Browserify transform for Jison parsers.

Mix Jison parsers into your JS files and Browserify projects without needing additional build steps.

NPM version Build Status Dependency Status

Installation

npm install jisonify

Usage

browserify -t jisonify main.js > bundle.js

Example

// 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>

Programmatic example

var browserify = require('browserify');
var jisonify = require('jisonify');

var b = browserify();
b.add('./main.js');
b.transform(jisonify);
b.bundle(function(err, src) {
  // ...
});

License

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

About

A Browserify transform for Jison parsers.

https://npmjs.org/package/jisonify

License:MIT License


Languages

Language:JavaScript 91.9%Language:HTML 8.1%