Parts common to both solutions are: a type for Grammars with a pretty printer (module Grammar), traditional monadic parsing combinators (module PM) and some utilities (module MUtils).
A simple example can be found in silly.hs, which works with both implementations of the parsing combinators.