-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A ReadP style parser library for ByteString
--
-- This is a library of parser combinators, originally written by Koen
-- Claessen. It parses all alternatives in parallel, so it never keeps
-- hold of the beginning of the input string, a common source of space
-- leaks with other parsers. The '(+++)' choice combinator is genuinely
-- commutative; it makes no difference which branch is "shorter".
--
-- Adapted to use Data.ByteString by Gracjan Polak. Designed as a drop-in
-- replacement for Text.ParserCombinators.ReadP.
@package bytestringreadp
@version 0.2
-- | This is a library of parser combinators, originally written by Koen
-- Claessen. It parses all alternatives in parallel, so it never keeps
-- hold of the beginning of the input string, a common source of space
-- leaks with other parsers. The '(+++)' choice combinator is
-- genuinely commutative; it makes no difference which branch is
-- "shorter".
--
-- Adapted to use Data.ByteString by Gracjan Polak. Designed as
-- a drop-in replacement for Text.ParserCombinators.ReadP.
module Text.ParserCombinators.ReadP.ByteString
data ReadP a
skip :: Int -> ReadP ()
-- | Look-ahead: returns the part of the input that is left, without
-- consuming it.
look :: ReadP ByteString
-- | Symmetric choice.
(+++) :: ReadP a -> ReadP a -> ReadP a
-- | Local, exclusive, left-biased choice: If left parser locally produces
-- any result at all, then right parser is not used.
(<++) :: ReadP a -> ReadP a -> ReadP a
-- | Transforms a parser into one that does the same, but in addition
-- returns the exact number of characters read. IMPORTANT NOTE:
-- countsym gives a runtime error if its first argument is built
-- using any occurrences of readS_to_P.
countsym :: ReadP a -> ReadP (Int, a)
-- | Consumes and returns the next character. Fails if there is no input
-- left.
get :: ReadP Word8
-- | Always fails.
pfail :: ReadP a
-- | Consumes and returns the next character, if it satisfies the specified
-- predicate.
satisfy :: (Word8 -> Bool) -> ReadP Word8
-- | Parses and returns the specified character.
char :: Word8 -> ReadP Word8
-- | Parses and returns the specified string.
string :: ByteString -> ReadP ByteString
-- | Transforms a parser into one that does the same, but in addition
-- returns the exact characters read. IMPORTANT NOTE: gather gives
-- a runtime error if its first argument is built using any occurrences
-- of readS_to_P.
gather :: ReadP a -> ReadP (ByteString, a)
-- | Parses the first zero or more characters satisfying the predicate.
munch :: (Word8 -> Bool) -> ReadP ByteString
-- | Parses the first one or more characters satisfying the predicate.
munch1 :: (Word8 -> Bool) -> ReadP ByteString
-- | Skips all whitespace.
skipSpaces :: ReadP ()
-- | Combines all parsers in the specified list.
choice :: [ReadP a] -> ReadP a
-- | count n p parses n occurrences of p in
-- sequence. A list of results is returned.
count :: Int -> ReadP a -> ReadP [a]
-- | between open close p parses open, followed by
-- p and finally close. Only the value of p is
-- returned.
between :: ReadP open -> ReadP close -> ReadP a -> ReadP a
-- | option x p will either parse p or return x
-- without consuming any input.
option :: a -> ReadP a -> ReadP a
-- | optional p optionally parses p and always returns
-- ().
optional :: ReadP a -> ReadP ()
-- | Parses zero or more occurrences of the given parser.
many :: ReadP a -> ReadP [a]
-- | Parses one or more occurrences of the given parser.
many1 :: ReadP a -> ReadP [a]
-- | Like many, but discards the result.
skipMany :: ReadP a -> ReadP ()
-- | Like many1, but discards the result.
skipMany1 :: ReadP a -> ReadP ()
-- | sepBy p sep parses zero or more occurrences of p,
-- separated by sep. Returns a list of values returned by
-- p.
sepBy :: ReadP a -> ReadP sep -> ReadP [a]
-- | sepBy1 p sep parses one or more occurrences of p,
-- separated by sep. Returns a list of values returned by
-- p.
sepBy1 :: ReadP a -> ReadP sep -> ReadP [a]
-- | endBy p sep parses zero or more occurrences of p,
-- separated and ended by sep.
endBy :: ReadP a -> ReadP sep -> ReadP [a]
-- | endBy p sep parses one or more occurrences of p,
-- separated and ended by sep.
endBy1 :: ReadP a -> ReadP sep -> ReadP [a]
-- | chainr p op x parses zero or more occurrences of p,
-- separated by op. Returns a value produced by a right
-- associative application of all functions returned by op. If
-- there are no occurrences of p, x is returned.
chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a
-- | chainl p op x parses zero or more occurrences of p,
-- separated by op. Returns a value produced by a left
-- associative application of all functions returned by op. If
-- there are no occurrences of p, x is returned.
chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a
-- | Like chainl, but parses one or more occurrences of p.
chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a
-- | Like chainr, but parses one or more occurrences of p.
chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a
-- | manyTill p end parses zero or more occurrences of p,
-- until end succeeds. Returns a list of values returned by
-- p.
manyTill :: ReadP a -> ReadP end -> ReadP [a]
-- | A parser for a type a, represented as a function that takes a
-- ByteString and returns a list of possible parses as
-- (a,ByteString) pairs.
--
-- Note that this kind of backtracking parser is very inefficient;
-- reading a large structure may be quite slow (cf ReadP).
type ReadS a = ByteString -> [(a, ByteString)]
-- | Converts a parser into a Haskell ReadS-style function. This is the
-- main way in which you can "run" a ReadP parser: the expanded
-- type is readP_to_S :: ReadP a -> ByteString ->
-- [(a,ByteString)]
readP_to_S :: ReadP a -> ReadS a
-- | Converts a Haskell ReadS-style function into a parser. Warning: This
-- introduces local backtracking in the resulting parser, and therefore a
-- possible inefficiency.
readS_to_P :: ReadS a -> ReadP a
instance MonadPlus ReadP
instance Monad ReadP
instance Functor ReadP
instance MonadPlus P
instance Monad P