megaparsec/README.md

58 lines
2.4 KiB
Markdown
Raw Normal View History

# Megaparsec
2015-08-17 20:08:17 +03:00
*Note that this is work in progress.*
2015-07-27 12:00:41 +03:00
[![License BSD3](https://img.shields.io/badge/license-BSD3-brightgreen.svg)](http://opensource.org/licenses/BSD-3-Clause)
2015-07-27 12:12:29 +03:00
[![Build Status](https://travis-ci.org/mrkkrp/megaparsec.svg?branch=master)](https://travis-ci.org/mrkkrp/megaparsec)
2015-08-02 10:33:26 +03:00
[![Coverage Status](https://coveralls.io/repos/mrkkrp/megaparsec/badge.svg?branch=master&service=github)](https://coveralls.io/github/mrkkrp/megaparsec?branch=master)
This is industrial-strength monadic parser combinator library. Megaparsec is
2015-08-17 20:08:17 +03:00
a fork of Parsec library originally written by Daan Leijen.
2015-08-17 20:08:17 +03:00
Megaparsec is different from Parsec in the following ways:
2015-08-17 20:08:17 +03:00
* Better error messages. We test our error messages using dense QuickCheck
tests. Good error messages are just as important for us as correct return
values of our parsers. Megaparsec will be especially useful if you write
compiler or interpreter for some language.
2015-08-17 20:08:17 +03:00
* Some quirks and “buggy features” (as well as plain bugs) of original
Parsec are fixed. There is no undocumented surprising stuff in Megaparsec.
2015-08-17 20:08:17 +03:00
* Better support for Unicode parsing in `Text.Megaparsec.Char`.
* Megaparsec has more powerful combinators and can parse languages where
indentation matters.
* Comprehensive QuickCheck test suite covering nearly 100% of our code.
2015-07-30 19:04:33 +03:00
2015-08-17 20:08:17 +03:00
* We have benchmarks to detect performance regressions.
2015-08-17 20:08:17 +03:00
* Better documentation, with 100% of functions covered, without typos and
obsolete information, with working examples. Megaparsec's documentation is
well-structured and doesn't contain things useless to end user.
* Megaparsec's code is clearer and doesn't contain “magic” found in original
Parsec (just look at how Parsec generate error-messages, you can find more
in [issue #14](https://github.com/mrkkrp/megaparsec/issues/14) of
Megaparsec, this is just one example).
* Megaparsec looks into the future, it does not contain code that serves for
compatibility purposes, it also requires more recent version of `base`.
## Contributing
Issues (bugs, feature requests or otherwise feedback) may be reported in
2015-07-27 12:00:41 +03:00
[the Github issue tracker for this project](https://github.com/mrkkrp/megaparsec/issues).
2015-08-17 20:08:17 +03:00
Pull-requests are also welcome (and yes, they will get attention and will be
merged quickly if they are good, we are progressive folks).
## License
Copyright © 2015 Megaparsec contributors<br>
2015-07-27 12:28:15 +03:00
Copyright © 2007 Paolo Martini<br>
2015-07-31 14:44:27 +03:00
Copyright © 19992000 Daan Leijen
2015-07-27 12:00:41 +03:00
Distributed under BSD3 license.