Monadic parser combinators.
Parsec is designed from scratch as an industrial-strength parser library. It is simple, safe, well documented (on the package homepage), has extensive libraries and good error messages, and is also fast. It is defined as a monad transformer that can be stacked on arbitrary monads, and it is also parametric in the input stream type.
This package comes without the compatibility layer for parsec2.
Note, that the module names overlap with those of newer parsec versions, therefore I do not recommend to unconditionally use parsec3 as dependency in cabal files of packages for hackage. But you may want to develop your code using this subset of parsec3 modules and finally change the dependency from parsec3 to parsec in order to avoid module ambiguities for users just installing your package. Your own module ambiguities are best avoided by hiding packages.
This version reflects the changes of parsec-3.1.8