Skip to content

joefutrelle/rmutt

Repository files navigation

Hello, welcome to rmutt!

NEWS

A port of rmutt that includes a Javascript API has been developed
by rstuven, called rmutt.js:

http://github.com/rstuven/rmutt.js

INTRODUCTION

"rmutt" is a utility for generating random text from context-free
grammars (a.k.a. recursive transition networks). It's modeled after
Andrew C. Bulhak's late, great "dada engine" which he used to write
the hilarious Postmodern Thesis Generator.

For more information and complete documentation see

http://github.com/joefutrelle/rmutt

VERSION

2.7

CHANGE HISTORY

2.7

* new syntax: now not just literals are allowed on the lhs
  of mappings. regexes are too, and the mapping will "fire"
  if the regex matches. (e.g., foo: "814" > /1/ % "contains 1";)

2.6

* now requires libgmp
* -i now accepts aribrary-length integers
* added -I option for reading iteration number from a file

2.5.1

* added xml utility example, replacing old xml.rm which was renamed
spew_xml.rm
* added JCR system view example

2.5

* build requires bison 1.5 or greater
* major syntax changes:
** "|" readmitted as a synonym for "," to separate choices
** positional arguments _1, _2, ... _nnn now supported as follows:
*** define a rule as rule_name[arg1,arg2,...,argn]: body;
*** call a rule as rule_name[exp,exp,...,exp]
*** e.g., (dash[a,b]: a "-" b) "Edward " dash["Bulwer","Lytton"]
*** inside this rule a is synonymous with _1 and b with _2
** clarified scoping rules:
*** LOCAL (no qualifier): modifies local grammar (formerly LEXICAL)
*** NON_LOCAL ("^"): modifies nearest ancestor binding
*** GLOBAL ("$"): modifies top-level binding (which still may be shadowed) (formerly DYNAMIC)
* fixed bug where files #included more than once were parsed more than once
* fixed bug where default packages of recursively-included files could be wrong

2.3.0

* major syntax changes ("()" instead of "[]", "," instead of "|", no more "&")
* added ability to use \n and \t in regex replacements
* added PREFIX variable to Makefile:
** will install binary to $PREFIX/bin and included .rm files to $PREFIX/share/rmutt
** will search for #includes in $PREFIX/share/rmutt
* fixed lexical scoping issues with packages and #includes:
** "package" statements in #included files no longer affect including file
** line number error reporting is now unaffected by #includes
* if a rule is not found, will now issue a warning, output the label, and continue
* fixed bug affecting scope of package-qualified terms

2.2.1

* fixed memory management bug in support for lexical scope

2.2

* added scope qualifiers for nested assignments and rules

2.1

* added -d flag for backward compatibility with 1.x dynamic rule scope

2.0

* embedded rules and assignments now have lexical scope, rather than dynamic scope.

1.6

* #includes added

1.5

* complex mappings added. a literal can now be mapped to an expression,
  not just another literal.

1.4

* -i feature for enumerating all possible strings

1.3

* Added the following iteration shorthands:
  - ? => {0,1}
  - * => {0,5}
  - + => {1,5}
* Fixed bug where iteration code was using rand() instead of random()

1.2.2

* Added random seed option.
* Added line numbers in error reporting.

1.2.1

1.2

* Changed stack size limit behavior from exiting to halting
  expansion at the current depth.
* Added "&" choice qualifier to multiply the probability that
  a choice will be selected.
* Changed from rand() to random() for better random number
  generation.
* Added test script and test target to Makefile

1.1

* Made it so that when rmutt can't find a rule in the current
  package, it searches for a rule with the same name in the
  default package.
* Fixed memory leak in parser.
* Added a stack size limit to prevent crashes when grammars
  have infinite or just very deep grammars

1.0

* Initial revision

About

Rmutt Turing-complete random text generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published