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.


Reply via email to