-- 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