Turn a Nearley grammar into an efficient fake-text generator
npm install nearley-generatorNearley 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);
0 < convergenceFactor < 1
The convergence () determines, roughly, how "deep" the generator will descend into recursive production rules.
1.0
Using 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.
Math.random()
Custom PRNG
========
By default, the generator uses for randomness.
Math.random
To use a seedable or otherwise custom PRNG, a replacement function for can be passed as an additional argument to the constructor:
`
``
let g = new NearleyGenerator(myGrammer, myRandom);
// myRandom() should return a float in 0, 1)
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.