fastparser alternatives and similar packages
Based on the "Parsing" category.
Alternatively, view fastparser alternatives based on common mentions on social networks and blogs.
-
trifecta
Parser combinators with highlighting, slicing, layout, literate comments, Clang-style diagnostics and the kitchen sink -
Earley
Parsing all context-free grammars using Earley's algorithm in Haskell. -
parser-combinators
Lightweight package providing commonly useful parser combinators -
replace-megaparsec
Stream editing with Haskell Megaparsec parsers -
descriptive
Self-describing consumers/parsers; forms, cmd-line args, JSON, etc. -
scanner
Fast non-backtracking incremental combinator parsing for bytestrings -
parsec-free
Parsec API encoded as a deeply-embedded DSL, for debugging and analysis -
incremental-parser
Haskell parsing combinator liibrary that can be fed the input and emit the parsed output incrementally -
data-stm32
ARM SVD and CubeMX XML parser and pretty printer for STM32 family -
hsemail
Haskell Parsec parsers for the syntax defined in RFC2821 and 2822 -
replace-attoparsec
Stream editing with Haskell Attoparsec parsers -
parsec-parsers
Orphan instances so you can use `parsers` with `parsec`. -
record-syntax
A library for parsing and processing the Haskell syntax sprinkled with anonymous records -
attoparsec-parsec
An Attoparsec compatibility layer for Parsec -
matrix-market-attoparsec
Attoparsec parsers for the NIST Matrix Market format -
attoparsec-expr
Port of parsec's expression parser to attoparsec. -
fuzzy-dates
Automatically detect and parse dates in many different formats -
streaming-binary
Incremental serialization and deserialization of Haskell values. -
antlrc
Haskell binding to the ANTLR parser generator C runtime library http://www.antlr.org/wiki/display/ANTLR3/ANTLR3+Code+Generation+-+C
InfluxDB - Power Real-Time Data Analytics at Scale
Do you think we are missing an alternative of fastparser or a related project?
README
A very simple, backtracking, fast parser combinator library.
It is measurably faster than attoparsec (36% in this use case), but only works on strict ByteString
, lacks many helper functions, and is not resumable.
It also should consume a tiny bit less memory for equivalent operations.
When NOT to use fastparser
- When performance is not the most pressing concern.
- When you need to parse anything else but strict
ByteString
. - When you need to use a battle-tested library. While very simple, and in constant use by me, this package is still quite experimental.
- When you need to parse large inputs that are not easily cut into many smaller pieces that can be parsed independently.
How to use fastparser
fastparser
works well with small pieces, such as individual log file lines. It is recommended to use it with a coroutine library (such as conduit or pipe), so that the input could be incrementaly consumed, cut into individual records, all of which would end up parsed independently.
One such setup, with the conduit
ecosystem, would look like:
sourceFile "/tmp/foo" .| Data.Conduit.Binary.lines .| CL.map (parseOnly parser) .| ...
Other than that, fastparser
is fairly close to any other parser combinators library.