Safe Haskell | None |
---|
This module contains a large variety of combinators for list-like structures. the extension _ng
indicates that
that variant is the non-greedy variant.
See the Text.ParserCombinators.UU.Demo.Examples module for some examples of their use.
- pReturn :: Applicative p => a -> p a
- pFail :: Alternative p => p a
- pMaybe :: IsParser p => p a -> p (Maybe a)
- pEither :: IsParser p => p a -> p b -> p (Either a b)
- (<$$>) :: IsParser p => (a -> b -> c) -> p b -> p (a -> c)
- (<??>) :: IsParser p => p a -> p (a -> a) -> p a
- pMany :: IsParser p => p a -> p [a]
- pSome :: IsParser f => f a -> f [a]
- pPacked :: IsParser p => p b1 -> p b2 -> p a -> p a
- pFoldr :: IsParser p => (a -> a1 -> a1, a1) -> p a -> p a1
- pFoldr_ng :: IsParser p => (a -> a1 -> a1, a1) -> p a -> p a1
- pFoldr1 :: IsParser p => (v -> b -> b, b) -> p v -> p b
- pFoldr1_ng :: IsParser p => (v -> b -> b, b) -> p v -> p b
- list_alg :: (a -> [a] -> [a], [a1])
- pList :: IsParser p => p a -> p [a]
- pList_ng :: IsParser p => p a -> p [a]
- pList1 :: IsParser p => p a -> p [a]
- pList1_ng :: IsParser p => p a -> p [a]
- pFoldrSep :: IsParser p => (v -> b -> b, b) -> p a -> p v -> p b
- pFoldrSep_ng :: IsParser p => (v -> b -> b, b) -> p a -> p v -> p b
- pFoldr1Sep :: IsParser p => (a -> b -> b, b) -> p a1 -> p a -> p b
- pFoldr1Sep_ng :: IsParser p => (a -> b -> b, b) -> p a1 -> p a -> p b
- pListSep :: IsParser p => p a1 -> p a -> p [a]
- pListSep_ng :: IsParser p => p a1 -> p a -> p [a]
- pList1Sep :: IsParser p => p a1 -> p a -> p [a]
- pList1Sep_ng :: IsParser p => p a1 -> p a -> p [a]
- pChainr :: IsParser p => p (c -> c -> c) -> p c -> p c
- pChainr_ng :: IsParser p => p (c -> c -> c) -> p c -> p c
- pChainl :: IsParser p => p (c -> c -> c) -> p c -> p c
- pChainl_ng :: IsParser p => p (c -> c -> c) -> p c -> p c
- pExact :: IsParser f => Int -> f a -> f [a]
- pBetween :: IsParser f => Int -> Int -> f a -> f [a]
- pAtLeast :: IsParser f => Int -> f a -> f [a]
- pAtMost :: IsParser f => Int -> f a -> f [a]
- pCount :: (IsParser p, Num b) => p a -> p b
- pAny :: IsParser p => (a -> p a1) -> [a] -> p a1
Some aliases for oft occurring constructs
pReturn :: Applicative p => a -> p aSource
is defined for upwards compatibility
pReturn
pFail :: Alternative p => p aSource
pMaybe :: IsParser p => p a -> p (Maybe a)Source
pMaybe
greedily recognises its argument. If not Nothing
is returned.
pEither :: IsParser p => p a -> p b -> p (Either a b)Source
pEither
recognises either one of its arguments.
(<??>) :: IsParser p => p a -> p (a -> a) -> p aSource
<??>
parses an optional postfix element and applies its result to its left hand result
pMany :: IsParser p => p a -> p [a]Source
pMany
is equivalent to the many
from Control.Applicative. We want however all our parsers to start with a lower case p
.
pSome :: IsParser f => f a -> f [a]Source
pSome
is equivalent to the some
from Control.Applicative. We want however all our parsers to start with a lower case p
.
pPacked :: IsParser p => p b1 -> p b2 -> p a -> p aSource
surrounds its third parser with the first and the second one, returning only the middle result
pPacked
Iterating combinators, all in a greedy (default) and a non-greedy (ending with _ng
) variant
Recognising list like structures
pFoldr1_ng :: IsParser p => (v -> b -> b, b) -> p v -> p bSource
Recognising list structures with separators
pFoldrSep_ng :: IsParser p => (v -> b -> b, b) -> p a -> p v -> p bSource
pFoldr1Sep :: IsParser p => (a -> b -> b, b) -> p a1 -> p a -> p bSource
pFoldr1Sep_ng :: IsParser p => (a -> b -> b, b) -> p a1 -> p a -> p bSource
pListSep_ng :: IsParser p => p a1 -> p a -> p [a]Source
pList1Sep_ng :: IsParser p => p a1 -> p a -> p [a]Source
Combinators for chained structures
Treating the operator as right associative
pChainr_ng :: IsParser p => p (c -> c -> c) -> p c -> p cSource
Treating the operator as left associative
pChainl_ng :: IsParser p => p (c -> c -> c) -> p c -> p cSource