@@ -0,0 +1,105 @@
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+--
16+module Streamly.Data.Parser
17+ (
18+ -- * Parser Type
19+ Parser
20+
21+ -- XXX Should we use Fold.fromParser instead?
22+ -- -- * Downgrade to Fold
23+ -- , toFold
24+
25+ -- * Parsers
26+ -- ** From Folds
27+ , fromFold
28+
29+ -- ** Without Input
30+ -- , fromFoldMaybe
31+ , fromPure
32+ , fromEffect
33+ , die
34+ -- , dieM
35+
36+ -- ** Element parsers
37+ , peek
38+
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
49+
50+ -- ** Sequences
51+ , eqBy
52+ , list
53+
54+ -- * Combinators
55+ -- Mapping on output
56+ -- , rmapM
57+
58+ -- ** Mapping on input
59+ , lmap
60+ , lmapM
61+
62+ -- ** Filtering
63+ , filter
64+
65+ -- ** Look Ahead
66+ , lookAhead
67+
68+ -- ** Tokenize by length
69+ -- , takeBetween
70+ , takeEQ
71+ -- , takeGE
72+ -- , takeP
73+
74+ -- ** Tokenize by predicate
75+ -- , takeWhileP
76+ , takeWhile
77+ , takeWhile1
78+ , dropWhile
79+ -- , takeEndBy
80+ -- , takeEndByEsc
81+ -- , takeStartBy
82+ , wordBy
83+
84+ -- ** Grouping
85+ , groupBy
86+ -- , groupByRolling
87+ -- , groupByRollingEither
88+
89+ -- ** Framing
90+ , wordFramedBy
91+ , wordQuotedBy
92+
93+ -- ** Splitting
94+ , many
95+ , some
96+ , manyTill
97+
98+ -- ** De-interleaving
99+ , deintercalate
100+ )
101+
102+where
103+
104+import Streamly.Internal.Data.Parser
105+import Prelude hiding (dropWhile, takeWhile, filter)