on 30c98dc help sign in
105 lines 1.9 kB history raw
1-- |
2-- Module : Streamly.Data.Parser
3-- Copyright : (c) 2020 Composewell Technologies
4-- License : BSD-3-Clause
5-- Maintainer : streamly@composewell.com
6-- Stability : pre-release
7-- Portability : GHC
8--
9-- Fast backtracking parsers with stream fusion and native streaming
10-- capability. Parsers are just more powerful folds, folds and parsers can be
11-- interconverted.
12--
13-- Note that these parsers do not report the error context (e.g. line number or
14-- column). Though this can be supported in future.
15--
16module Streamly.Data.Parser
17 (
18 -- * Parser Type
19 Parser
21 -- XXX Should we use Fold.fromParser instead?
22 -- -- * Downgrade to Fold
23 -- , toFold
25 -- * Parsers
26 -- ** From Folds
27 , fromFold
29 -- ** Without Input
30 -- , fromFoldMaybe
31 , fromPure
32 , fromEffect
33 , die
34 -- , dieM
36 -- ** Element parsers
37 , peek
39 -- All of these can be expressed in terms of either
40 , one
41 , element
42 , except
43 , oneOf
44 , noneOf
45 , satisfy
46 -- , maybe
47 -- , either
48 , eof
50 -- ** Sequences
51 , eqBy
52 , list
54 -- * Combinators
55 -- Mapping on output
56 -- , rmapM
58 -- ** Mapping on input
59 , lmap
60 , lmapM
62 -- ** Filtering
63 , filter
65 -- ** Look Ahead
66 , lookAhead
68 -- ** Tokenize by length
69 -- , takeBetween
70 , takeEQ
71 -- , takeGE
72 -- , takeP
74 -- ** Tokenize by predicate
75 -- , takeWhileP
76 , takeWhile
77 , takeWhile1
78 , dropWhile
79 -- , takeEndBy
80 -- , takeEndByEsc
81 -- , takeStartBy
82 , wordBy
84 -- ** Grouping
85 , groupBy
86 -- , groupByRolling
87 -- , groupByRollingEither
89 -- ** Framing
90 , wordFramedBy
91 , wordQuotedBy
93 -- ** Splitting
94 , many
95 , some
96 , manyTill
98 -- ** De-interleaving
99 , deintercalate
100 )
102where
104import Streamly.Internal.Data.Parser
105import Prelude hiding (dropWhile, takeWhile, filter)