Happy and Macros (was Re: ANNOUNCE: Happy 1.10 released)

Thomas Johnsson johnsson@crt.se
Fri, 11 May 2001 09:01:04 +0200


S. Alexander Jacobson writes:
 > I am not a parsing expert, but given the recent discussion on macros, I
 > have to ask: why use happy rather than monadic parsing?  Monadic parsing
 > allows you to avoid a whole additional language/compilation step and work
 > in Hugs (where you don't have a makefile).  What does Happy buy you here?

Happy and others like it generate an LR parser, which is a well-established
technology since the late 60's (Knuth): efficient, deterministic, and checks the grammar for you.
Parser combinators are usually nondeterministic ie backtracking (pre-Knuth!:-)
though Cleverly Disguised in Haskell Higher Order clothes....
LR parsers gives you greated freedom in expressing the grammar, with the LR parser generator
leaning over your shoulder.
Grammars possible with parsing combinators are more constrained: cannot use left recursion,
order of rules matters, etc. On the other hand, one has the whole abstraction machinery 
of Haskell or whatever at hand for writing the grammar rules.

The analogy that comes to mind is statically typed languages vs runtime typed ones.

--Thomas
PS would be cool to try to marry the two approaches....