Instaparse is an easy-to-use, feature-rich parser generator for Clojure. The big idea behind instaparse is to make it simple to convert grammars to parsers without needing to know the idiosyncrasies of LL1, LALR, and other esoteric grammar restrictions imposed by most parser generators.
When I announced instaparse a little over a month ago, I imagined that I had packed so many features into it, that surely there was nothing more that anyone could possibly want. Oh, how naive I was :) . Within a few days, there were a half-dozen great enhancement ideas posted on the github site. Here are the highlights of the new 1.1.0 release: 1. Support for comments in the grammar. (This was by far the most popular request.) 2. A new front-end for ABNF grammars. ABNF is a syntax popular for carefully defining protocols in formal specs. Instaparse's support for ABNF means that it is a simple copy-paste exercise to turn these specifications into an executable parser. 3. The ability to convert EBNF and ABNF *fragments* into Clojure data structures that can be easily merged with one another and with data structures built by the combinator library. https://github.com/Engelberg/instaparse for full feature list and extensive tutorial. https://github.com/Engelberg/instaparse/blob/master/CHANGES.md for a list of changes since the last version. https://github.com/Engelberg/instaparse/blob/master/docs/ABNF.md for detailed docs about the new ABNF syntax. It seems that whenever instaparse comes up, there is an outcry from people who have a visceral reaction against the notion of building a parser from a *string specification* of a grammar. So I want to be clear up front that instaparse supports *three *input formats that you can freely mix-and-match: EBNF strings, ABNF strings, and Clojure data structures. String input is particularly handy since most grammars are already written down somewhere in one of these two notations, but the data structures are an option if you need them. Instaparse also supports two output formats: hiccup and enlive. This release focused mostly on adding new features; the next version will primarily be another round of performance tuning. If you want to follow along and help test as I try out new optimization strategies, keep an eye on the 1.2.0-SNAPSHOT branch: https://github.com/Engelberg/instaparse/tree/v1.2 Special thanks to Alex Engelberg who implemented the new ABNF input format, and David Powell and Peter Monks who suggested the feature and helped test it. -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.