Conclusion
TODO
- Prettier printing of grammars
- Add a combinator to accept options in arbitrary order
- Extract documentation from recursive grammars
- Convenient support for extra checks that requires access to an
underlying monad. (E.g. checking that a file exists.)
- Report ambiguities in the grammar
- ...