mirror of
https://github.com/mrkkrp/megaparsec.git
synced 2024-11-23 10:23:39 +03:00
refreshed README.md
This commit is contained in:
parent
67d2a9369b
commit
f6e6010a52
55
README.md
55
README.md
@ -1,45 +1,52 @@
|
||||
# Megaparsec
|
||||
|
||||
*Note that this is work in progress.*
|
||||
|
||||
[![License BSD3](https://img.shields.io/badge/license-BSD3-brightgreen.svg)](http://opensource.org/licenses/BSD-3-Clause)
|
||||
[![Build Status](https://travis-ci.org/mrkkrp/megaparsec.svg?branch=master)](https://travis-ci.org/mrkkrp/megaparsec)
|
||||
[![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
|
||||
a fork of original Parsec library written by Daan Leijen. This library is
|
||||
different from Parsec in the following ways:
|
||||
a fork of Parsec library originally written by Daan Leijen.
|
||||
|
||||
* Original Parsec consists of quite ancient code-base and has certain
|
||||
stylistic problems that's anyone who tries to compile Parsec with `-Wall`
|
||||
option can notice. This has been refreshed in Megaparsec. The changes are
|
||||
mainly cosmetic but not limited to them.
|
||||
Megaparsec is different from Parsec in the following ways:
|
||||
|
||||
* Some quirks and old «buggy features» (as well as plain bugs) are fixed.
|
||||
* 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.
|
||||
|
||||
* Original Parsec uses rather weak collection of tests: a test per bug,
|
||||
obviously to prevent regression. Our aim is to write complete test-suite
|
||||
with QuickCheck to cover 100% of Megaparsec code. You can understand need
|
||||
for this test-suite if you look at `CHANGELOG.md` file that includes
|
||||
Parsec-era changes. The word «regression» mentioned quite frequently.
|
||||
* Some quirks and “buggy features” (as well as plain bugs) of original
|
||||
Parsec are fixed. There is no undocumented surprising stuff in Megaparsec.
|
||||
|
||||
* Megaparsec looks into future, it does not contain code that serves for
|
||||
* 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.
|
||||
|
||||
* We have benchmarks to detect performance regressions.
|
||||
|
||||
* 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`.
|
||||
|
||||
* Finally, we have fixed numerous typos and other minor flaws.
|
||||
|
||||
The reason for creating separate version of the project was inactivity of
|
||||
its current maintainer who reduced active contributions to something like
|
||||
one commit in three months and indefinitely delayed merging of our
|
||||
contributions without any explanation. We wanted to improve Parsec and we
|
||||
had some ideas how this can be achieved, so we decided to create our own
|
||||
version of Parsec.
|
||||
|
||||
## Contributing
|
||||
|
||||
Issues (bugs, feature requests or otherwise feedback) may be reported in
|
||||
[the Github issue tracker for this project](https://github.com/mrkkrp/megaparsec/issues).
|
||||
|
||||
Pull-requests are also welcome (and yes they will get attention and will be
|
||||
merged quickly if they are good).
|
||||
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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user