An open API service indexing awesome lists of open source software.

https://github.com/schmich/jisonify

A Browserify transform for Jison parsers.
https://github.com/schmich/jisonify

browser browserify javascript jison language lexer parser programming-language

Last synced: 8 months ago
JSON representation

A Browserify transform for Jison parsers.

Awesome Lists containing this project

README

          

# Jisonify

A [Browserify](https://github.com/substack/node-browserify) transform for [Jison](https://github.com/zaach/jison) parsers.

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

[![NPM version](https://badge.fury.io/js/jisonify.svg)](https://npmjs.org/package/jisonify)
[![Build Status](https://travis-ci.org/schmich/jisonify.svg?branch=master)](https://travis-ci.org/schmich/jisonify)
[![Dependency Status](https://gemnasium.com/schmich/jisonify.svg)](https://gemnasium.com/schmich/jisonify)

## Installation

```
npm install jisonify
```

## Usage

```
browserify -t jisonify main.js > bundle.js
```

## Example

```js
// calc.jison
%lex
%%

\s+ /* Skip whitespace. */
[0-9]+ return 'NUMBER'
"-" return '-'
"+" return '+'
<> 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); }
;
```

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

```html








Result:

```

### Programmatic example

```js
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](LICENSE) for details.