Instaparse is a library for generating parsers from context-free grammars.
The main new feature in this release is support for namespaced non-terminals in your grammar, which become namespaced keywords in the parser's tagged output. Namespaced keywords have become much more prevalent in Clojure style in the years since instaparse was first released, so I suspect many will find it useful to have direct support for namespaces.
Namespaces utilize `.` and `/` characters which have other meanings in grammar specifications. It shouldn't cause any problems provided there's some whitespace around these characters when using them as grammar operators, but I wanted to be sure not to break previous grammars where there was no reason to be careful with spacing, so this is an
opt-in feature for backwards compatibility. The way to opt-in to this feature is by adding the optional keyword argument `:allow-namespaced-nts true` when building your parser. For more explanation and an example, see the documentation here:
https://github.com/Engelberg/instaparse?tab=readme-ov-file#namespaced-keywords
Thanks to Oliver (
github.com/or) for suggesting this feature two years ago and providing the pull request that was the foundation of this release. And thanks to Clojurists Together for making it feasible for me to spend time digging back into instaparse, evaluating and testing pull requests, and working to get them merged and documented.