General top-down parser combinators (left and right derivations) written in Haskell.