[Haskell-cafe] Announcing Pinchot - builds data types and Earley grammars for context-free grammars

Omari Norman omari at smileystation.com
Sat Dec 5 17:54:31 UTC 2015


I have just uploaded to Hackage the Pinchot library:

https://hackage.haskell.org/package/pinchot

I also have a pull request to get it into Stackage so hopefully it should
be there in a few days as well.

Pinchot provides a simple monadic language that you use to describe a
context-free grammar. Using this language you build a value that represents
your grammar.  Then, using this value and Template Haskell, you can
automatically generate a complete set of data types that correspond to the
rules in your context-free grammar.

You also use Template Haskell to generate an Earley grammar for your
language, using the Haskell Earley library:

https://hackage.haskell.org/package/Earley

Unlike parsers such as Parsec and Happy, Earley parses all context-free
grammars, regardless of the amount of necessary look-ahead or the presence
of left recursion.  Earley does not, however, parse context-sensitive
grammars.

Pinchot is documented and comes with several examples.  It passes several
simple tests but it has not yet been used in anger.

I wrote Pinchot because I was excited to see Earley when it was released.
Finally we had a parser that would simply parse context-free grammars.
Give a grammar, get a parser.  Parsec and its ilk, on the other hand, are
libraries allowing you to write a recursive-descent parser by hand.  That's
useful, but if you know you have a context-free grammar it's easier to use
a tool tailored to that.

So when using Earley I found myself writing the data types and then writing
the Earley grammar specification.  This was a rote process ripe for
automation.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20151205/a2847eb0/attachment.html>


More information about the Haskell-Cafe mailing list