microparsec
                                
                                
                                
                                    microparsec copied to clipboard
                            
                            
                            
                        ⭐ A performant Nim parsing library built for humans.
Some Parsec combinators were improved by Megaparsec. Implement the following or find alternatives: - [x] `between` - [x] `sepBy` - [x] `sepBy1` - [ ] `choice` - [ ] `count`...
Some Parsec combinators were improved by Megaparsec. Implement the following or find alternatives: - [ ] `newline` - [ ] `crlf` - [ ] `eol` - [ ] `tab` -...
Useful for validating input. [Similar to `options`](https://nim-lang.org/docs/options.html#filter%2COption%5BT%5D%2Cproc%28T%29). Or, better yet, do it in arnetheduck/nim-result#14.
- [ ] [A nice, tricky example](https://www.reddit.com/r/haskell/comments/avok2x/how_to_design_parsec_parsers_for_good_error/ehh1009?utm_source=share&utm_medium=web2x&context=3)
Or find alternatives: - [ ] `parserTrace` - [ ] `parserTraced` [Code can be found here](https://hackage.haskell.org/package/parsec-3.1.14.0/docs/src/Text.Parsec.Combinator.html).
That means checking if `readChar` understands at least `\n` (Unix-like) and `\r\n` (Windows-like). See [here](https://en.wikipedia.org/wiki/Newline#Representation).
Should fallback to [this](https://github.com/arnetheduck/nim-result/blob/3726fd298c49e17f2681a7310e61499ba5c72ef4/results.nim#L519-L522) and [this](https://github.com/arnetheduck/nim-result/blob/3726fd298c49e17f2681a7310e61499ba5c72ef4/results.nim#L624-L627). String conversion for errors is covered in #11.
- [Generalising monads to arrows](https://doi.org/10.1016/S0167-6423(99)00023-4) - [Programming with Arrows](http://www.cse.chalmers.se/~rjmh/afp-arrows.pdf) - [`functional-arrow`](https://hackage.haskell.org/package/functional-arrow) Related to parameter orderings too (see #7). EDIT: [Control.Arrow](https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Arrow.html#g:1).