[Haskell-cafe] Parsing in Haskell

Graham Klyne GK at ninebynine.org
Tue Feb 15 08:13:57 EST 2005

I've used Parsec for small and more complex parsing tasks, and found it 
works well for both.

In the past, I've used parser generators (not with Haskell), but now I find 
that I prefer to express a parser directly in the main programming language 
I'm using ... that way, it's easier to "escape" the grammar and do the 
things that aren't always so easy to do within the BNF-and-stuff 
formalisms.  I find my code using Parsec is close enough to the BNF that 
the syntax production logic is easy enough to see.  A very useful feature 
of Parsec is that, within what is broadly an LL(1) parsing framework, it 
provides a controlled limited lookahead capability.

Another useful little trick I've found using Haskell+Parsec is that for an 
interpreted "little language", instead of returning a data structure 
describing the input sentence, I can return a function that can be applied 
to appropriate values to execute it directly.


At 11:36 15/02/05 +0100, Johan Glimming wrote:
>I want to implement a little algebraic specification language in Haskell, 
>and I have a working C implementation available which uses yacc/flex.
>What is the best way of replacing yacc/bison and (f)lex when migrating the 
>project into Haskell?
>Best Wishes,
>Haskell-Cafe mailing list
>Haskell-Cafe at haskell.org

Graham Klyne
For email:

More information about the Haskell-Cafe mailing list