uulib-0.9.24: Haskell Utrecht Tools Library

Safe Haskell | None
Language | Haskell98

UU.Parsing.Derived

Contents

- Checking
- Prelude defs
- Sequential compositions
- Iterating parsers
- Misc

Synopsis

- acceptsepsilon :: IsParser p s => p v -> Bool
- mnz :: IsParser p s => p v -> t -> String -> t
- (<..>) :: IsParser p s => s -> s -> p s
- pExcept :: (IsParser p s, Symbol s, Ord s, Eq (SymbolR s)) => (s, s, s) -> [s] -> p s
- opt :: IsParser p s => p a -> a -> p a
- asList :: IsParser p s => Expecting s -> p v -> p v
- asList1 :: IsParser p s => Expecting s -> p v -> p v
- asOpt :: IsParser p s => Expecting s -> p v -> p v
- (<+>) :: IsParser p s => p a -> p b -> p (a, b)
- (<**>) :: Applicative f => f a -> f (a -> b) -> f b
- (<$$>) :: IsParser p s => (a -> b -> c) -> p b -> p (a -> c)
- (<??>) :: IsParser p s => p a -> p (a -> a) -> p a
- (<?>) :: IsParser p s => p v -> String -> p v
- pPacked :: IsParser p s => p a -> p b1 -> p b -> p b
- pFoldr_ng :: IsParser p s => (a -> a1 -> a1, a1) -> p a -> p a1
- pFoldr_gr :: IsParser p s => (a -> b -> b, b) -> p a -> p b
- pFoldr :: IsParser p s => (a -> b -> b, b) -> p a -> p b
- pFoldr1_ng :: IsParser p s => (v -> b -> b, b) -> p v -> p b
- pFoldr1_gr :: IsParser p s => (v -> b -> b, b) -> p v -> p b
- pFoldr1 :: IsParser p s => (v -> b -> b, b) -> p v -> p b
- pFoldrSep_ng :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b
- pFoldrSep_gr :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b
- pFoldrSep :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b
- pFoldr1Sep_ng :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b
- pFoldr1Sep_gr :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b
- pFoldr1Sep :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b
- pList_ng :: IsParser p s => p a -> p [a]
- pList_gr :: IsParser p s => p a -> p [a]
- pList :: IsParser p s => p a -> p [a]
- pList1_ng :: IsParser p s => p a -> p [a]
- pList1_gr :: IsParser p s => p a -> p [a]
- pList1 :: IsParser p s => p a -> p [a]
- pListSep_ng :: IsParser p s => p a1 -> p a -> p [a]
- pListSep_gr :: IsParser p s => p a1 -> p a -> p [a]
- pListSep :: IsParser p s => p a -> p a1 -> p [a1]
- pList1Sep_ng :: IsParser p s => p a1 -> p a -> p [a]
- pList1Sep_gr :: IsParser p s => p a1 -> p a -> p [a]
- pList1Sep :: IsParser p s => p a -> p a1 -> p [a1]
- pChainr_ng :: IsParser p s => p (a -> a -> a) -> p a -> p a
- pChainr_gr :: IsParser p s => p (c -> c -> c) -> p c -> p c
- pChainr :: IsParser p s => p (c -> c -> c) -> p c -> p c
- pChainl_ng :: IsParser p s => p (c -> c -> c) -> p c -> p c
- pChainl_gr :: IsParser p s => p (c -> c -> c) -> p c -> p c
- pChainl :: IsParser p s => p (c -> c -> c) -> p c -> p c
- pAny :: IsParser p s => (a -> p a1) -> [a] -> p a1
- pAnySym :: IsParser p s => [s] -> p s
- pToks :: IsParser p s => [s] -> p [s]
- pLocate :: IsParser p s => [[s]] -> p [s]

# Checking

acceptsepsilon :: IsParser p s => p v -> Bool Source #

Checks if the parser accepts epsilon.

mnz :: IsParser p s => p v -> t -> String -> t Source #

# Prelude defs

(<..>) :: IsParser p s => s -> s -> p s infixl 5 Source #

Parses the specified range, see also `pRange`.

Example:

    pDig = 'a' <..> 'z'

pExcept :: (IsParser p s, Symbol s, Ord s, Eq (SymbolR s)) => (s, s, s) -> [s] -> p s Source #

opt :: IsParser p s => p a -> a -> p a infixl 2 Source #

Optionally recognize parser `p`.

If `p` can be recognized, the return value of `p` is used. Otherwise, the value `v` is used. Note that opt is greedy, if you do not want this use `... | pSucceed v` instead. Furthermore, `p` should not recognise the empty string.

# Sequential compositions

asList :: IsParser p s => Expecting s -> p v -> p v Source #

asList1 :: IsParser p s => Expecting s -> p v -> p v Source #

asOpt :: IsParser p s => Expecting s -> p v -> p v Source #

(<+>) :: IsParser p s => p a -> p b -> p (a, b) infixl 4 Source #

Parses the sequence of `pa` and `pb`, and combines them as a tuple.

(<**>) :: Applicative f => f a -> f (a -> b) -> f b #

(<$$>) :: IsParser p s => (a -> b -> c) -> p b -> p (a -> c) Source #

(<??>) :: IsParser p s => p a -> p (a -> a) -> p a infixl 4 Source #

(<?>) :: IsParser p s => p v -> String -> p v infixl 2 Source #

pPacked :: IsParser p s => p a -> p b1 -> p b -> p b Source #

This can be used to parse `x` surrounded by `l` and `r`.

Example:

    pParens = pPacked pOParen pCParen

# Iterating parsers

pFoldr_ng :: IsParser p s => (a -> a1 -> a1, a1) -> p a -> p a1 Source #

pFoldr_gr :: IsParser p s => (a -> b -> b, b) -> p a -> p b Source #

pFoldr :: IsParser p s => (a -> b -> b, b) -> p a -> p b Source #

pFoldr1_ng :: IsParser p s => (v -> b -> b, b) -> p v -> p b Source #

pFoldr1_gr :: IsParser p s => (v -> b -> b, b) -> p v -> p b Source #

pFoldr1 :: IsParser p s => (v -> b -> b, b) -> p v -> p b Source #

pFoldrSep_ng :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b Source #

pFoldrSep_gr :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b Source #

pFoldrSep :: IsParser p s => (v -> b -> b, b) -> p a -> p v -> p b Source #

pFoldr1Sep_ng :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b Source #

pFoldr1Sep_gr :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b Source #

pFoldr1Sep :: IsParser p s => (a -> b -> b, b) -> p a1 -> p a -> p b Source #

pList_ng :: IsParser p s => p a -> p [a] Source #

pList_gr :: IsParser p s => p a -> p [a] Source #

pList :: IsParser p s => p a -> p [a] Source #

pList1_ng :: IsParser p s => p a -> p [a] Source #

pList1_gr :: IsParser p s => p a -> p [a] Source #

pList1 :: IsParser p s => p a -> p [a] Source #

pListSep_ng :: IsParser p s => p a1 -> p a -> p [a] Source #

pListSep_gr :: IsParser p s => p a1 -> p a -> p [a] Source #

pListSep :: IsParser p s => p a -> p a1 -> p [a1] Source #

pList1Sep_ng :: IsParser p s => p a1 -> p a -> p [a] Source #

pList1Sep_gr :: IsParser p s => p a1 -> p a -> p [a] Source #

pList1Sep :: IsParser p s => p a -> p a1 -> p [a1] Source #

pChainr_ng :: IsParser p s => p (a -> a -> a) -> p a -> p a Source #

pChainr_gr :: IsParser p s => p (c -> c -> c) -> p c -> p c Source #

pChainr :: IsParser p s => p (c -> c -> c) -> p c -> p c Source #

pChainl_ng :: IsParser p s => p (c -> c -> c) -> p c -> p c Source #

pChainl_gr :: IsParser p s => p (c -> c -> c) -> p c -> p c Source #

pChainl :: IsParser p s => p (c -> c -> c) -> p c -> p c Source #

# Misc

pAny :: IsParser p s => (a -> p a1) -> [a] -> p a1 Source #

Parses using any of the parsers in the list `l`.

Warning: `l` may not be an empty list.

pAnySym :: IsParser p s => [s] -> p s Source #

Parses any of the symbols in `l`.

pToks :: IsParser p s => [s] -> p [s] Source #

pLocate :: IsParser p s => [[s]] -> p [s] Source #