1
1
mirror of https://github.com/mrkkrp/megaparsec.git synced 2024-12-22 15:51:38 +03:00
Commit Graph

249 Commits

Author SHA1 Message Date
mrkkrp
455bfa3076 major improvements of ‘Text.Megaparsec.Prim’
* Removed ‘optionMaybe’ parser, because ‘optional’ from
  ‘Control.Applicative’ does the same thing.

* Renamed ‘tokenPrim’ → ‘token’, removed old ‘token’, because
  ‘tokenPrim’ is more general and ‘token’ is little used.

* Fixed bug with ‘notFollowedBy’ always succeeded with parsers that
  don't consume input, see .

* Hint system introduced that greatly improved quality of error messages
  and made code of ‘Text.Megaparsec.Prim’ a lot clearer.

The improvements affected other modules too:

* Some parsers from ‘Text.Megaparsec.Combinators’ now live in
  ‘Text.Megaparsec.Prim’.

* Hint system improved error messages, so I needed to rewrite test for
  ‘Text.Megaparsec.Char.eol’, since it's error messages are very
  intelligent now and cannot be emulated by ‘newline’ and ‘crlf’ parsers
  used separately.

* Test for Bug9 from old-tests is passed successfully again.
2015-08-17 21:58:59 +06:00
mrkkrp
65fbedee1c added more powerful ‘count’ parser, close
This parser can be told to parse from ‘m’ to ‘n’ occurrences of some
thing. Old parser ‘count’ is now named ‘count’' and defined in terms of
that more powerful one.

This commit also reorders functions in module
‘Text.Megaparsec.Combinator’ and everywhere where the functions are
listed. The same order is used everywhere.
2015-08-13 01:02:33 +06:00
mrkkrp
287a777e6c cosmetic changes (indentation, etc) 2015-08-13 00:02:49 +06:00
mrkkrp
77a54394b5 extend collection of character parsers, close
Added new character parsers in ‘Text.Megaparsec.Char’:

* ‘controlChar’
* ‘printChar’
* ‘markChar’
* ‘numberChar’
* ‘punctuationChar’
* ‘symbolChar’
* ‘separatorChar’
* ‘asciiChar’
* ‘latin1Char’
* ‘charCategory’

Renamed some parsers:

‘spaces’   → ‘space’
‘space’    → ‘spaceChar’
‘lower’    → ‘lowerChar’
‘upper’    → ‘upperChar’
‘letter’   → ‘letterChar’
‘alphaNum’ → ‘alphaNumChar’
‘digit’    → ‘digitChar’
‘octDigit’ → ‘octDigitChar’
‘hexDigit’ → ‘hexDigitChar’

Descriptions of old parsers have been updated to accent some
Unicode-specific moments. For example, old description of ‘letter’
stated that it parses letters from “a” to “z” and from “A” to “Z”. This
is wrong, since it used ‘Data.Char.isAlpha’ predicate internally and
thus parsed many more characters.
2015-08-12 23:00:03 +06:00
mrkkrp
08f2d0b3bd extend change log 2015-08-12 18:41:44 +06:00
mrkkrp
bd04b4328c various minor changes 2015-08-12 18:41:22 +06:00
mrkkrp
c13ca493ae experimental branch with different Messages 2015-08-11 18:15:02 +06:00
mrkkrp
da48d0c690 finished tests for ‘Text.Megaparsec.Char’ 2015-08-11 03:22:29 +06:00
mrkkrp
176fe8d9c1 improve quality of error messages, fixed 2015-08-11 03:21:52 +06:00
mrkkrp
bb074cc52b fixed a regression in ‘Text.Megaparsec.Error’
I've improved tests so this sort of bug won't appear in future.
2015-08-11 03:19:16 +06:00
mrkkrp
36d704851e better test options for Travis CI 2015-08-09 00:50:29 +06:00
mrkkrp
43557469f2 use two threads for local testing 2015-08-09 00:49:30 +06:00
mrkkrp
e890c715e2 refactoring, more tests for ‘Text.Megaparsec.Char’ 2015-08-09 00:42:47 +06:00
mrkkrp
dedbe7a897 fix regression in ‘setErrorMessage’, add tests
New tests shows that I had wrong assumption about workings of this
particular function. This is not a problem, though, complete test-suite
will eliminate this sort of nuisance soon.
2015-08-09 00:38:30 +06:00
mrkkrp
c4350dca37 further cosmetic changes in ‘Text.Megaparsec.Char’ 2015-08-09 00:37:51 +06:00
mrkkrp
fcf1b972e8 a minor correction in doc-string of ‘setErrorMessage’ 2015-08-08 15:53:55 +06:00
mrkkrp
ebc1fae39c cosmetic changes in ‘Text.Megaparsec.Char’ 2015-08-08 15:50:50 +06:00
mrkkrp
ceb5d9bc16 some tests for ‘Text.Megaparsec.Char’ 2015-08-08 15:49:57 +06:00
mrkkrp
80e93b90a6 fixing things in ‘Text.Megaparsec.Error’ 2015-08-08 15:48:20 +06:00
mrkkrp
3daa70f15a representation of tokens in error messages, fixed
* Type class ‘ShowToken’ introduced to pretty-print tokens.

* For now, we have defined instances for ‘String’ and ‘Char’.
2015-08-06 16:37:08 +06:00
mrkkrp
0608926db2 extends description of ‘Text.Megaparsec’ module 2015-08-04 00:15:16 +06:00
mrkkrp
cbbf27ddd0 export only useful (for user) functions
User still can import ‘Text.Megaparsec.Prim’ to access the stuff, but
it's very unlikely that this sort of things is used often.
2015-08-04 00:02:23 +06:00
mrkkrp
02e5f148e9 updated doc for ‘Text.Megaparsec.Prim.runParsecT’ 2015-08-04 00:01:38 +06:00
mrkkrp
be36490aa2 corrections for ‘Text.Megaparsec.Error’ 2015-08-03 23:44:40 +06:00
mrkkrp
eb8fdcce2f tests for ‘Text.Megaparsec.Error’ 2015-08-03 23:44:11 +06:00
mrkkrp
79a378c9c4 remove parenthesis around “line & column” block 2015-08-03 20:45:09 +06:00
mrkkrp
274eca9706 renamed ‘oldtests’ → ‘old-tests’ for readability 2015-08-03 13:23:52 +06:00
mrkkrp
19b8aaba16 added ‘megaparsec.ebal’ file 2015-08-03 13:20:48 +06:00
mrkkrp
437608c2c7 minor corrections in module ‘Text.Megaparsec.Pos’ 2015-08-03 13:20:15 +06:00
mrkkrp
866bcdec58 some tests written 2015-08-03 13:19:23 +06:00
mrkkrp
77db6414c6 integration with Coveralls 2015-08-03 12:46:53 +06:00
mrkkrp
3ef5e5e621 renamed ‘MegaParsec’ → ‘Megaparsec’, close 2015-08-01 22:24:45 +06:00
mrkkrp
3c69bc8f48 re-export ‘(<|>)’, ‘many’, ‘some’, and ‘optional’, fixes
These functions are now re-exported from ‘Control.Applicative’
module. ‘many’ and ‘some’ are now part of ‘Alternative’ instance of
‘ParsecT’.

Note that these functions are re-exported only in ‘Text.MegaParsec’
module, but not in ‘Text.MegaParsec.Prim’ to avoid duplication of
floating doc-strings. Others internal modules now just casually import
‘Control.Applicative’ for their needs.

Note that ‘many1’ was renamed to ‘some’, the same is done for other
parsers that had ‘many1’ part in their names (for consistency).
2015-08-01 20:49:45 +06:00
mrkkrp
c340479623 extend list of contributors 2015-08-01 14:41:21 +06:00
Mark Karpov
d79dc45039 Merge pull request from albertnetymk/remove-try-float
Remove `try` in float parser.
2015-08-01 13:41:47 +05:00
Albert Netymk
189106f001 Remove try in float parser.
According to this post
(http://blog.ezyang.com/2014/05/parsec-try-a-or-b-considered-harmful/),
the error message could be confusing if using `try`. `"3.a"` is one case
to expose this behavior.
2015-07-31 23:45:42 +02:00
mrkkrp
1ce541aaba remove word ‘unsigned’ from descriptions 2015-08-01 01:31:31 +06:00
mrkkrp
7c0341af72 the grammars overlap so there should be a ‘try’ 2015-07-31 20:31:38 +06:00
mrkkrp
181bad13ec updated changelog 2015-07-31 20:13:38 +06:00
mrkkrp
e46ba8db05 added benchmarks (empty for now) 2015-07-31 20:12:56 +06:00
mrkkrp
5459bf05e0 specified versions of ‘base’ for tests 2015-07-31 20:06:07 +06:00
mrkkrp
ec57da40b0 reorganized tests 2015-07-31 18:59:26 +06:00
mrkkrp
f346063cc1 reordered copyright notices 2015-07-31 17:44:27 +06:00
mrkkrp
c5bcdfb220 rewritten parsing of numbers, fixes and
Changed how numbers are parsed because they were parsed in a naïf and
hairy way. Added tests for  and  (in old Parsec project these are
number 35 and 39 respectively).

* Since Haskell report doesn't say anything about sign, I've made
  ‘integer’ and ‘float’ parse numbers without sign.

* Removed ‘natural’ parser, it's equal to new ‘integer’ now.

* Renamed ‘naturalOrFloat’ → ‘number’ — this doesn't parse sign too.

* Added new combinator ‘signed’ to parse all sorts of signed numbers.

* For the sake of convenience I've added ‘integer'’, ‘float'’, and
 ‘number'’ combinators that also can parse signed numbers out of box.
2015-07-31 17:30:38 +06:00
mrkkrp
b19dae4315 improve efficiency of applicative interface 2015-07-31 01:50:36 +06:00
mrkkrp
0123e43eb5 a minor correction in ‘README.md’ 2015-07-31 01:13:22 +06:00
mrkkrp
59a0447f78 make travis test haddock docs 2015-07-31 00:38:47 +06:00
mrkkrp
b936e3c3a9 improved documentation, fixes 2015-07-31 00:36:54 +06:00
mrkkrp
773e9ccabe cosmetic changes in copyright (headers) 2015-07-30 22:20:37 +06:00
mrkkrp
8fff49b19d mentioned compatibility and ‘base’ 2015-07-30 22:04:33 +06:00