on fe28607 help sign in
108 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 -- -- * Downgrade to Fold
22 -- , toFold
24 -- * Parsers
25 -- ** From Folds
26 , fromFold
28 -- ** Without Input
29 -- , fromFoldMaybe
30 , fromPure
31 , fromEffect
32 , die
33 -- , dieM
34 , peek
35 , eof
37 -- ** Element parsers
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
49 -- ** Sequences
50 , eqBy
51 , listEqBy
52 , listEq
54 -- * Combinators
55 -- Mapping on output
56 -- , rmapM
58 -- ** Mapping on input
59 , lmap
60 , lmapM
62 -- * Map on output
63 , rmapM
65 -- ** Filtering
66 , filter
68 -- ** Look Ahead
69 , lookAhead
71 -- ** Tokenize by length
72 -- , takeBetween
73 , takeEQ
74 -- , takeGE
75 -- , takeP
77 -- ** Tokenize by predicate
78 -- , takeWhileP
79 , takeWhile
80 , takeWhile1
81 , dropWhile
82 -- , takeEndBy
83 -- , takeEndByEsc
84 -- , takeStartBy
85 , wordBy
87 -- ** Grouping
88 , groupBy
89 -- , groupByRolling
90 -- , groupByRollingEither
92 -- ** Framing
93 , wordFramedBy
94 , wordQuotedBy
96 -- ** Splitting
97 , many
98 , some
99 , manyTill
101 -- ** De-interleaving
102 , deintercalate
103 )
105where
107import Streamly.Internal.Data.Parser
108import Prelude hiding (dropWhile, takeWhile, filter)