nearley-moo
moo (ultra-fast tokenizer) plugin for nearley 🐄
install
with npm
npm install nearley-moo --save
with yarn
yarn add nearley-moo
usage
index.js
const moo = const nearley = const grammar = // compiled from grammar.neconst tokens = const nm = // curried let parser = // ignored tokens will not be passed to nearley// helpful for whitespace and/or commentsparser // may be Array<string> or String // feed your lexer+parser combo as normalparser console // just like nearley
tokens.js
moduleexports = whitespace: /[ \t]+/ moo: /+/ cows: /cows/ boolean: 'true' 'false' keyword: 'if' 'then' 'else'
grammar.ne
@{% const nm = require('nearley-moo')const tokens = require('./tokens.js') nm(tokens) %} main -> %keyword_if expression %keyword_then expression %keyword_else expression expression -> boolean | %moo | %cows boolean -> %boolean_true {% d => true %} | %boolean_false {% d => false %}