> Are combinator parsers recursive decent?
> Do they have any disadvantages over generated parsers like that yacc would
produce?
Yes, combinator parsers are recursive decent (ie. LL parsers). Some
libraries, like the ones that produce parse tables, are restricted to LL(1)
while others can handle arbitrary LL(n) grammars and even context-sensitive
infinite look-ahead grammars.
The Parsec library is an 'industrial strength' parser combinator library
that is simple, safe, well documented, has extensive libraries and good
error messages. The documentation discusses problems and advantages of using
a combinator library with respect to a parser generator. The main advantage
of Parsec is that it can parse a much larger class of grammars that LALR(1)
(like yacc).
Parsec is part of HsLibs distributed with GHC and it can be found at:
http://www.cs.uu.nl/~daan/parsec.html
You might also want to take a look at an elegant parser generator for
Haskell, called Happy.
http://www.haskell.org/happy
All the best,
Daan.