module Text.XML.WraXML.Tree.LazyParser where
import qualified Text.ParserCombinators.Poly.Lazy as Parser
import Text.ParserCombinators.Poly.Lazy (Parser, )
import Control.Monad (liftM2, )
force :: Parser t a -> Parser t a
force :: forall t a. Parser t a -> Parser t a
force = forall (p :: * -> *) a b. PolyParse p => p (a -> b) -> p a -> p b
Parser.apply (forall (m :: * -> *) a. Monad m => a -> m a
return forall a. a -> a
id)
manyFinallyAppend :: Parser t [a] -> a ->
Parser t a -> Parser t [a]
manyFinallyAppend :: forall t a. Parser t [a] -> a -> Parser t a -> Parser t [a]
manyFinallyAppend Parser t [a]
terminator a
eofWarn Parser t a
p =
let recourse :: Parser t [a]
recourse = forall t a. Parser t a -> Parser t a
force forall a b. (a -> b) -> a -> b
$
Parser t [a]
terminator forall t a. Parser t a -> Parser t a -> Parser t a
`Parser.onFail`
forall (m :: * -> *) a1 a2 r.
Monad m =>
(a1 -> a2 -> r) -> m a1 -> m a2 -> m r
liftM2 (:) Parser t a
p Parser t [a]
recourse forall t a. Parser t a -> Parser t a -> Parser t a
`Parser.onFail`
forall (m :: * -> *) a. Monad m => a -> m a
return [a
eofWarn]
in Parser t [a]
recourse
manyLazy :: Parser t a -> Parser t [a]
manyLazy :: forall t a. Parser t a -> Parser t [a]
manyLazy Parser t a
p =
let recourse :: Parser t [a]
recourse = forall t a. Parser t a -> Parser t a
force forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *) a1 a2 r.
Monad m =>
(a1 -> a2 -> r) -> m a1 -> m a2 -> m r
liftM2 (:) Parser t a
p Parser t [a]
recourse forall t a. Parser t a -> Parser t a -> Parser t a
`Parser.onFail` forall (m :: * -> *) a. Monad m => a -> m a
return []
in Parser t [a]
recourse