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.