scanner

Fast non-backtracking incremental combinator parsing for bytestrings https://github.com/Yuras/scanner

Version on this page:0.2
LTS Haskell 9.20:0.2
Stackage Nightly 2017-12-18:0.2
Latest on Hackage:0.2
BSD3 licensed by Yuras Shumovich
Maintained by shumovichy@gmail.com

Module documentation for 0.2

scanner

Fast non-backtracking incremental combinator parsing for bytestrings

Build Status

On hackage: http://hackage.haskell.org/package/scanner

It is often convinient to use backtracking to parse some sophisticated input. Unfortunately it kills performance, so usually you should avoid backtracking.

Often (actually always, but it could be too hard sometimes) you can implement your parser without any backtracking. It that case all the bookkeeping usuall parser combinators do becomes unnecessary. The scanner library is designed for such cases. It is often 2 times faster then attoparsec.

As an example, please checkout redis protocol parser included into the repo, both using attoparsec and scanner libraries: https://github.com/Yuras/scanner/tree/master/examples/Redis

Benchmark results:

Bechmark results

But if you really really really need backtracking, then you can just inject attoparsec parser into a scanner: http://hackage.haskell.org/package/scanner-attoparsec

Changes

0.2

  • make Scanner a newtype instead of data, see https://github.com/Yuras/scanner/pull/3
  • improve string performance
  • add scanWith

0.1

  • initial release
Depends on 2 packages:
Used by 2 packages:
comments powered byDisqus