Turn a Nearley grammar into an efficient fake-text generator
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
.npmignore
README.md
package.json
webpack.config.js

README.md

Nearley Generator

This module takes a compiled Nearley parser grammar and turns it into an efficient fake-text generator that produces random strings from the grammar.

To use:

import NearleyGenerator from 'nearley-generator';
import myGrammar from './compiled-nearley-grammar.js';
let g = new NearleyGenerator(myGrammar);

g.generate('startSymbol', convergenceFactor);

The convergence (0 < convergenceFactor < 1) determines, roughly, how "deep" the generator will descend into recursive production rules. Using 1.0 means that any production for a every symbol is always equally likely, but may produce extremely large strings or take a long time to terminate, whereas using a value like 0.6 or 0.7 discourages following a recursive rule more than two or three levels deep.

Examples

This package powers the mLab, a satire/parody site making fun of the nLab, a wiki for higher mathematics and category theory. You can view the Nearley grammar powering the site here.

Credit

The algorithm used for generation was heavily inspired by this article by Eli Bendersky.