[Haskell-cafe] Parsec-like parser combinator that handles left recursion?

S. Doaitse Swierstra doaitse at swierstra.net
Tue Dec 8 11:11:22 EST 2009

In principle it is not possible to parse left-recursive grammars, but  
you may follow the following route:

  1 write your grammars using the constructors from the Christmastree  
package at:
  2 if you want to parse Haskell values use the provided template  
haskell code to derive these descriptions
  3 use the transformations to perform a left corner transform on   
your grammar, as done at:

For a full documentation of the underlying techniques see:


and Arthur Baars thesis at:


If you do not want to explore this route you may use combinators like  
pChainl and pChainr, which can be useful in removing left recursion  
and even make your parsers look nicer and more intuitive,

          Doaitse Swierstra

On 8 dec 2009, at 16:10, Adam Cigánek wrote:

> Hello there,
> Is there some other parser library, with similar nice API than Parsec,
> but which somehow handles left-recursive grammars? Ideally if it has
> at least rudimentary documentation and/or tutorial :)
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list