DONE(6/3/18) 10/11/17 Ben Culkin :Determinism Add a way to get the grammar to pick rules in a deterministic fashion, so as to be able to iterate all of the rules. - Specify the same Random instance to the state @TODO 10/11/17 Ben Culkin :ExportSanity Figure out a way to organize exports instead of just sticking them all into the global namespace. Maybe use the @ symbol for 'foreign rule references' (FRRs) ADDENDA: 10/26/17 We now have the '^' syntax to avoid shadowing issues, but this doesn't avoid the issue with duplicate exports. @TODO 10/23/17 Ben Culkin :Casing Provide some way to convert rules into different cases. @TODO 10/23/17 Ben Culkin :Spacing Find a saner way to do spacing. + rules work well for some things, but what is needed is some way to do it only one level deep. Possibly some kind of pragma to convert a rule to a single-level spacer? ADDENDA: 10/24/17 We now have a partial solution in 'despace-rule'. However, this doesn't quite work in some cases. Why is that? @TODO 10/23/17 Ben Culkin :Pluralizing Add some way to say to pluralize the contents of a rule @TODO 10/23/17 Ben Culkin :Extensions Add some soft of pragmas to allow the loading of extensions that provide custom rules/case types/pragmas and things like that @TODO 10/30/17 Ben Culkin :RegexPragma Add a pragma that applies a regex substitution to the generated version of a rule. @TODO 4/25/18 Ben Culkin :Debugging Add a way to print out the rules as a tree format, so as to perform better debugging of rules. Once this has been done, consider doing a CLI interface that allows manipulating and using grammars. @TODO 5/10/18 Ben Culkin :Despace Add a generalized form of despace-rule that allows inserting arbitray text between rule bits. Maybe call it 'intersperse-rule'? @TODO 5/10/18 Ben Culkin :RuleInclusion Add some way to sort of 'import' a rules body into another rule so as to not throw off probability by splitting. @TODO 6/3/18 Ben Culkin :DieRandom Add a way to use dice from dicelang (probably the rewrite, once that has a string parser) to create random numbers @TODO 9/22/2019 Ben Culkin :ErrorHandling Do a wholesale refactoring away from exceptions to a more C-style way of handling things. This will probably entail the definition of some kind of error code type that can be conveniently returned and used. @TODO 7/8/2020 Ben Culkin :RecurLimit Add some easy way to say that we only want to recur into a given rule once in this context (could some sort of use of exhaustive rule vars. do this? maybe. it's been a while since last I looked at the details of how this project worked; and I doubt I left enough comments/other documentation) @TODO 1/31/2024 Ben Culkin :PunctRef Fix the issue that seems to've cropped up when mixing punctuation w/ rule-refs