ben-ng / beefalo

A streaming shift-reduce parser written in vanilla Javascript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Beefalo

A streaming shift-reduce parser written in vanilla Javascript

Build Status

browser support

Usage

var beefalo = require('beefalo')
  , Fragment = require('Fragment')
  , grass = require('grass')
  , fs = require('fs')
  , tokens
  , grammar

// A token is any character 'a', 'b', or 'c'
tokens = new Fragment('a', 'a').union(new Fragment('b', 'b'))
                               .union(new Fragment('c', 'c'))

grammar = {
  nonTerminals: ['S', 'A']
, terminals: ['a', 'b', 'c']
, rules: [
    ['S', ['A']]
  , ['A', ['a', 'A']]
  , ['A', ['b', 'A']]
  , ['A', ['A', 'C']]
  ]
}

fs.createReadStream('input.txt')
  .pipe(grass(tokens))
  .pipe(beefalo(grammar))

About

A streaming shift-reduce parser written in vanilla Javascript


Languages

Language:JavaScript 100.0%