BNFGen
Generates random text based on context-free grammars defined in BNF
BNFGen generates random text based on context-free grammar. You give it a file with your grammar, defined using BNF-like syntax, it gives you a string that follows that grammar. BNFGen is a CLI tool, an OCaml library. There are also official JS bindings available via NPM. Project goals are to make it easy to write and share grammar and give the user total control of and insight into the generation process. BNFGen provides a "DSL" for grammar definitions. It's a familiar BNF-like syntax with a few additions. One problem with using straight BNF for driving language generators is that you have no control over the process. BNFGen adds two features to fix that. The canonical way to express repetition in BNF is to use a self-referential recursive rule. In classic BNF, that can easily lead to the process terminating to early, since there's a 50% chance that it will take the non-recursive alternative.