on 106939a help sign in
109 lines 2.0 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 -- , oneEq
42 -- , oneNotEq
43 , oneOf
44 , noneOf
45 , satisfy
46 -- , maybe
47 -- , either
48 , eof
50 -- ** Sequences
51 , eqBy
52 , listEqBy
53 , listEq
55 -- * Combinators
56 -- Mapping on output
57 -- , rmapM
59 -- ** Mapping on input
60 , lmap
61 , lmapM
63 -- * Map on output
64 , rmapM
66 -- ** Filtering
67 , filter
69 -- ** Look Ahead
70 , lookAhead
72 -- ** Tokenize by length
73 -- , takeBetween
74 , takeEQ
75 -- , takeGE
76 -- , takeP
78 -- ** Tokenize by predicate
79 -- , takeWhileP
80 , takeWhile
81 , takeWhile1
82 , dropWhile
83 -- , takeEndBy
84 -- , takeEndByEsc
85 -- , takeStartBy
86 , wordBy
88 -- ** Grouping
89 , groupBy
90 -- , groupByRolling
91 -- , groupByRollingEither
93 -- ** Framing
94 , wordFramedBy
95 , wordQuotedBy
97 -- ** Splitting
98 , many
99 , some
100 , manyTill
102 -- ** De-interleaving
103 , deintercalate
104 )
106where
108import Streamly.Internal.Data.Parser
109import Prelude hiding (dropWhile, takeWhile, filter)