module Text.Parsec.Free where
import Control.Applicative hiding (many)
import Control.Monad
import Control.Monad.Cont.Class
import Control.Monad.Error.Class
import Control.Monad.Free
import Control.Monad.IO.Class
import Control.Monad.Reader.Class
import Control.Monad.State.Class
import Control.Monad.Trans.Class
import qualified "parsec" Text.Parsec.Pos as P
import qualified "parsec" Text.Parsec.Prim as P
newtype ParsecDSL s u m a = ParsecDSL {
runParsecDSL :: Free (ParsecF s u m) a
}
deriving (Functor, Applicative, Monad, Show)
instance Alternative (ParsecDSL s u m) where
empty = parserZero
(<|>) = parserPlus
instance MonadPlus (ParsecDSL s u m) where
mzero = parserZero
mplus = parserPlus
instance (MonadReader r m) => MonadReader r (ParsecDSL s u m) where
ask = lift ask
local f p = error "NYI Free.MonadReader"
instance (MonadState s m) => MonadState s (ParsecDSL s' u m) where
get = lift get
put = lift . put
instance (MonadCont m) => MonadCont (ParsecDSL s u m) where
callCC f = error "NYI Free.callCC"
instance (MonadError e m) => MonadError e (ParsecDSL s u m) where
throwError = lift . throwError
p `catchError` h = error "NYI Free.catchError"
instance MonadTrans (ParsecDSL s u) where
lift m = liftF' $ Peffect m id
instance MonadIO m => MonadIO (ParsecDSL s u m) where
liftIO = lift . liftIO
data ParsecF s u m r
= forall a. Plifted (P.ParsecT s u m a) (a -> r)
| forall a. Peffect (m a) (a -> r)
| PgetState (u -> r)
| PputState u r
| PmodifyState (u -> u) r
| PgetPosition (P.SourcePos -> r)
| PsetPosition P.SourcePos r
| PgetInput (s -> r)
| PsetInput s r
| PgetParserState (P.State s u -> r)
| PsetParserState (P.State s u) (P.State s u -> r)
| PupdateParserState (P.State s u -> P.State s u) (P.State s u -> r)
| forall t. (P.Stream s m t, Eq t)
=> Ptokens ([t] -> String) (P.SourcePos -> [t] -> P.SourcePos)
[t] ([t] -> r)
| forall t a. P.Stream s m t
=> PtokenPrimEx (t -> String) (P.SourcePos -> t -> s -> P.SourcePos)
(Maybe (P.SourcePos -> t -> s -> u -> u))
(t -> Maybe a) (a -> r)
| P.Stream s m Char => PalphaNum (Char -> r)
| P.Stream s m Char => PanyChar (Char -> r)
| forall t. (Show t, P.Stream s m t) => PanyToken (t -> r)
| P.Stream s m Char => Pchar Char r
| P.Stream s m Char => Pcrlf (Char -> r)
| P.Stream s m Char => Pdigit (Char -> r)
| P.Stream s m Char => PendOfLine (Char -> r)
| forall t. (Show t, P.Stream s m t) => Peof r
| P.Stream s m Char => PhexDigit (Char -> r)
| P.Stream s m Char => Pletter (Char -> r)
| P.Stream s m Char => Plower (Char -> r)
| P.Stream s m Char => Pnewline (Char -> r)
| P.Stream s m Char => PnoneOf [Char] (Char -> r)
| P.Stream s m Char => PoctDigit (Char -> r)
| P.Stream s m Char => PoneOf [Char] (Char -> r)
| PparserFail String
| PparserZero
| P.Stream s m Char => Psatisfy (Char -> Bool) (Char -> r)
| P.Stream s m Char => Pspace (Char -> r)
| P.Stream s m Char => Pspaces r
| P.Stream s m Char => Pstring String r
| P.Stream s m Char => Ptab (Char -> r)
| P.Stream s m Char => Pupper (Char -> r)
| Punexpected String
| forall a. PparserPlus (ParsecDSL s u m a) (ParsecDSL s u m a) (a -> r)
| forall a. Plabel (ParsecDSL s u m a) String (a -> r)
| forall a. Plabels (ParsecDSL s u m a) [String] (a -> r)
| forall a. Ptry (ParsecDSL s u m a) (a -> r)
| forall a. Pchainl (ParsecDSL s u m a) (ParsecDSL s u m (a -> a -> a)) a (a -> r)
| forall a. Pchainl1 (ParsecDSL s u m a) (ParsecDSL s u m (a -> a -> a)) (a -> r)
| forall a. Pchainr (ParsecDSL s u m a) (ParsecDSL s u m (a -> a -> a)) a (a -> r)
| forall a. Pchainr1 (ParsecDSL s u m a) (ParsecDSL s u m (a -> a -> a)) (a -> r)
| forall a. Pchoice [ParsecDSL s u m a] (a -> r)
| forall a. Pcount Int (ParsecDSL s u m a) ([a] -> r)
| forall a. PlookAhead (ParsecDSL s u m a) (a -> r)
| forall a. Pmany (ParsecDSL s u m a) ([a] -> r)
| forall a. Pmany1 (ParsecDSL s u m a) ([a] -> r)
| forall a. PmanyAccum (a -> [a] -> [a]) (ParsecDSL s u m a) ([a] -> r)
| forall a. Show a => PnotFollowedBy (ParsecDSL s u m a) r
| forall a. Poption a (ParsecDSL s u m a) (a -> r)
| forall a. PoptionMaybe (ParsecDSL s u m a) (Maybe a -> r)
| forall a. Poptional (ParsecDSL s u m a) r
| forall a. PskipMany (ParsecDSL s u m a) r
| forall a. PskipMany1 (ParsecDSL s u m a) r
| forall end a. PmanyTill (ParsecDSL s u m a) (ParsecDSL s u m end) ([a] -> r)
| forall open close a. Pbetween (ParsecDSL s u m open) (ParsecDSL s u m close)
(ParsecDSL s u m a) (a -> r)
| forall sep a. PendBy (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| forall sep a. PendBy1 (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| forall sep a. PsepBy (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| forall sep a. PsepBy1 (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| forall sep a. PsepEndBy (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| forall sep a. PsepEndBy1 (ParsecDSL s u m a) (ParsecDSL s u m sep) ([a] -> r)
| Pidentifier (ParsecDSL s u m String) (String -> r)
| Preserved (ParsecDSL s u m ()) String r
| Poperator (ParsecDSL s u m String) (String -> r)
| PreservedOp (ParsecDSL s u m ()) String r
| PcharLiteral (ParsecDSL s u m Char) (Char -> r)
| PstringLiteral (ParsecDSL s u m String) (String -> r)
| Pnatural (ParsecDSL s u m Integer) (Integer -> r)
| Pinteger (ParsecDSL s u m Integer) (Integer -> r)
| Pfloat (ParsecDSL s u m Double) (Double -> r)
| PnaturalOrFloat (ParsecDSL s u m (Either Integer Double))
(Either Integer Double -> r)
| Pdecimal (ParsecDSL s u m Integer) (Integer -> r)
| Phexadecimal (ParsecDSL s u m Integer) (Integer -> r)
| Poctal (ParsecDSL s u m Integer) (Integer -> r)
| Psymbol (ParsecDSL s u m String) String (String -> r)
| forall a. Plexeme (ParsecDSL s u m a) (a -> r)
| PwhiteSpace (ParsecDSL s u m ()) r
| forall a. Pparens (ParsecDSL s u m a) (a -> r)
| forall a. Pbraces (ParsecDSL s u m a) (a -> r)
| forall a. Pangles (ParsecDSL s u m a) (a -> r)
| forall a. Pbrackets (ParsecDSL s u m a) (a -> r)
| forall a. Psquares (ParsecDSL s u m a) (a -> r)
| Psemi (ParsecDSL s u m String) (String -> r)
| Pcomma (ParsecDSL s u m String) (String -> r)
| Pcolon (ParsecDSL s u m String) (String -> r)
| Pdot (ParsecDSL s u m String) (String -> r)
| forall a. PsemiSep (ParsecDSL s u m [a]) ([a] -> r)
| forall a. PsemiSep1 (ParsecDSL s u m [a]) ([a] -> r)
| forall a. PcommaSep (ParsecDSL s u m [a]) ([a] -> r)
| forall a. PcommaSep1 (ParsecDSL s u m [a]) ([a] -> r)
instance Functor (ParsecF s u m) where
fmap f (Plifted p k) = Plifted p (f . k)
fmap f (Peffect m k) = Peffect m (f . k)
fmap f (PgetState k) = PgetState (f . k)
fmap f (PputState u r) = PputState u (f r)
fmap f (PmodifyState g r) = PmodifyState g (f r)
fmap f (PgetPosition k) = PgetPosition (f . k)
fmap f (PsetPosition p r) = PsetPosition p (f r)
fmap f (PgetInput k) = PgetInput (f . k)
fmap f (PsetInput s r) = PsetInput s (f r)
fmap f (PgetParserState k) = PgetParserState (f . k)
fmap f (PsetParserState s k) = PsetParserState s (f . k)
fmap f (PupdateParserState g k) = PupdateParserState g (f . k)
fmap f (Ptokens a b c k) = Ptokens a b c (f . k)
fmap f (PtokenPrimEx a b c d k) = PtokenPrimEx a b c d (f . k)
fmap f (PalphaNum k) = PalphaNum (f . k)
fmap f (PanyChar k) = PanyChar (f . k)
fmap f (PanyToken k) = PanyToken (f . k)
fmap f (Pchar x r) = Pchar x (f r)
fmap f (Pcrlf k) = Pcrlf (f . k)
fmap f (Pdigit k) = Pdigit (f . k)
fmap f (PendOfLine k) = PendOfLine (f . k)
fmap f (Peof r) = Peof (f r)
fmap f (PhexDigit k) = PhexDigit (f . k)
fmap f (Pletter k) = Pletter (f . k)
fmap f (Plower k) = Plower (f . k)
fmap f (Pnewline k) = Pnewline (f . k)
fmap f (PnoneOf xs k) = PnoneOf xs (f . k)
fmap f (PoctDigit k) = PoctDigit (f . k)
fmap f (PoneOf xs k) = PoneOf xs (f . k)
fmap _ (PparserFail s) = PparserFail s
fmap _ PparserZero = PparserZero
fmap f (Psatisfy g k) = Psatisfy g (f . k)
fmap f (Pspace k) = Pspace (f . k)
fmap f (Pspaces r) = Pspaces (f r)
fmap f (Pstring x r) = Pstring x (f r)
fmap f (Ptab k) = Ptab (f . k)
fmap f (Pupper k) = Pupper (f . k)
fmap _ (Punexpected s) = Punexpected s
fmap f (PparserPlus p q k) = PparserPlus p q (f . k)
fmap f (Plabel p a k) = Plabel p a (f . k)
fmap f (Plabels p a k) = Plabels p a (f . k)
fmap f (Ptry p k) = Ptry p (f . k)
fmap f (Pchainl p q a k) = Pchainl p q a (f . k)
fmap f (Pchainl1 p q k) = Pchainl1 p q (f . k)
fmap f (Pchainr p q a k) = Pchainr p q a (f . k)
fmap f (Pchainr1 p q k) = Pchainr1 p q (f . k)
fmap f (Pchoice xs k) = Pchoice xs (f . k)
fmap f (Pcount n p k) = Pcount n p (f . k)
fmap f (PlookAhead p k) = PlookAhead p (f . k)
fmap f (Pmany p k) = Pmany p (f . k)
fmap f (Pmany1 p k) = Pmany1 p (f . k)
fmap f (PmanyAccum g p k) = PmanyAccum g p (f . k)
fmap f (PnotFollowedBy p r) = PnotFollowedBy p (f r)
fmap f (Poption a p k) = Poption a p (f . k)
fmap f (PoptionMaybe p k) = PoptionMaybe p (f . k)
fmap f (Poptional p r) = Poptional p (f r)
fmap f (PskipMany p r) = PskipMany p (f r)
fmap f (PskipMany1 p r) = PskipMany1 p (f r)
fmap f (PmanyTill p e k) = PmanyTill p e (f . k)
fmap f (Pbetween o c p k) = Pbetween o c p (f . k)
fmap f (PendBy p s k) = PendBy p s (f . k)
fmap f (PendBy1 p s k) = PendBy1 p s (f . k)
fmap f (PsepBy p s k) = PsepBy p s (f . k)
fmap f (PsepBy1 p s k) = PsepBy1 p s (f . k)
fmap f (PsepEndBy p s k) = PsepEndBy p s (f . k)
fmap f (PsepEndBy1 p s k) = PsepEndBy1 p s (f . k)
fmap f (Pidentifier t k) = Pidentifier t (f . k)
fmap f (Preserved t s r) = Preserved t s (f r)
fmap f (Poperator t k) = Poperator t (f . k)
fmap f (PreservedOp t s r) = PreservedOp t s (f r)
fmap f (PcharLiteral t k) = PcharLiteral t (f . k)
fmap f (PstringLiteral t k) = PstringLiteral t (f . k)
fmap f (Pnatural t k) = Pnatural t (f . k)
fmap f (Pinteger t k) = Pinteger t (f . k)
fmap f (Pfloat t k) = Pfloat t (f . k)
fmap f (PnaturalOrFloat t k) = PnaturalOrFloat t (f . k)
fmap f (Pdecimal t k) = Pdecimal t (f . k)
fmap f (Phexadecimal t k) = Phexadecimal t (f . k)
fmap f (Poctal t k) = Poctal t (f . k)
fmap f (Psymbol t s k) = Psymbol t s (f . k)
fmap f (Plexeme p k) = Plexeme p (f . k)
fmap f (PwhiteSpace t r) = PwhiteSpace t (f r)
fmap f (Pparens p k) = Pparens p (f . k)
fmap f (Pbraces p k) = Pbraces p (f . k)
fmap f (Pangles p k) = Pangles p (f . k)
fmap f (Pbrackets p k) = Pbrackets p (f . k)
fmap f (Psquares p k) = Psquares p (f . k)
fmap f (Psemi t k) = Psemi t (f . k)
fmap f (Pcomma t k) = Pcomma t (f . k)
fmap f (Pcolon t k) = Pcolon t (f . k)
fmap f (Pdot t k) = Pdot t (f . k)
fmap f (PsemiSep p k) = PsemiSep p (f . k)
fmap f (PsemiSep1 p k) = PsemiSep1 p (f . k)
fmap f (PcommaSep p k) = PcommaSep p (f . k)
fmap f (PcommaSep1 p k) = PcommaSep1 p (f . k)
instance Show (ParsecF s u m r) where
show (Plifted _ _) = "lifted"
show (Peffect _ _) = "effect"
show (PgetState _) = "getState"
show (PputState _ _) = "putState"
show (PmodifyState _ _) = "modifyState"
show (PgetPosition _) = "getPosition"
show (PsetPosition _ _) = "setPosition"
show (PgetInput _) = "getInput"
show (PsetInput _ _) = "setInput"
show (PgetParserState _) = "getParserState"
show (PsetParserState _ _) = "setParserState"
show (PupdateParserState _ _) = "updateParserState"
show (Ptokens _ _ _ _) = "tokens"
show (PtokenPrimEx _ _ _ _ _) = "tokenPrim"
show (PalphaNum _) = "alphaNum"
show (PanyChar _) = "anyChar"
show (PanyToken _) = "anyToken"
show (Pchar x _) = "char " ++ show x
show (Pcrlf _) = "crlf"
show (Pdigit _) = "digit"
show (PendOfLine _) = "endOfLine"
show (Peof _) = "eof"
show (PhexDigit _) = "hexDigit"
show (Pletter _) = "letter"
show (Plower _) = "lower"
show (Pnewline _) = "newline"
show (PnoneOf xs _) = "noneOf " ++ show xs
show (PoctDigit _) = "octDigit"
show (PoneOf xs _) = "oneOf " ++ show xs
show (PparserFail s) = "parserFail " ++ show s
show PparserZero = "parserZero"
show (Psatisfy _ _) = "satisfy"
show (Pspace _) = "space"
show (Pspaces _) = "spaces"
show (Pstring x _) = "string " ++ show x
show (Ptab _) = "tab"
show (Pupper _) = "upper"
show (Punexpected s) = "unexpected " ++ show s
show (PparserPlus _ _ _) = "parserPlus"
show (Plabel _ a _) = "label " ++ show a
show (Plabels _ a _) = "labels " ++ show a
show (Ptry _ _) = "try"
show (Pchainl _ _ _ _) = "chainl"
show (Pchainl1 _ _ _) = "chainl1"
show (Pchainr _ _ _ _) = "chainr"
show (Pchainr1 _ _ _) = "chainr1"
show (Pchoice _ _) = "choice"
show (Pcount n _ _) = "count " ++ show n
show (PlookAhead _ _) = "lookAhead"
show (Pmany _ _) = "many"
show (Pmany1 _ _) = "many1"
show (PmanyAccum _ _ _) = "manyAccum"
show (PnotFollowedBy _ _) = "notFollowedBy"
show (Poption _ _ _) = "option"
show (PoptionMaybe _ _) = "optionMaybe"
show (Poptional _ _) = "optional"
show (PskipMany _ _) = "skipMany"
show (PskipMany1 _ _) = "skipMany1"
show (PmanyTill _ _ _) = "manyTill"
show (Pbetween _ _ _ _) = "between"
show (PendBy _ _ _) = "endBy"
show (PendBy1 _ _ _) = "endBy1"
show (PsepBy _ _ _) = "sepBy"
show (PsepBy1 _ _ _) = "sepBy1"
show (PsepEndBy _ _ _) = "sepEndBy"
show (PsepEndBy1 _ _ _) = "sepEndBy1"
show (Pidentifier _ _) = "identifier"
show (Preserved _ s _) = "reserved " ++ show s
show (Poperator _ _) = "operator"
show (PreservedOp _ s _) = "reservedOp " ++ show s
show (PcharLiteral _ _) = "charLiteral"
show (PstringLiteral _ _) = "stringLiteral"
show (Pnatural _ _) = "natural"
show (Pinteger _ _) = "integer"
show (Pfloat _ _) = "float"
show (PnaturalOrFloat _ _) = "naturalOrFloat"
show (Pdecimal _ _) = "decimal"
show (Phexadecimal _ _) = "hexadecimal"
show (Poctal _ _) = "octal"
show (Psymbol _ s _) = "symbol " ++ show s
show (Plexeme _ _) = "lexeme"
show (PwhiteSpace _ _) = "whiteSpace"
show (Pparens _ _) = "parens"
show (Pbraces _ _) = "braces"
show (Pangles _ _) = "angles"
show (Pbrackets _ _) = "brackets"
show (Psquares _ _) = "squares"
show (Psemi _ _) = "semi"
show (Pcomma _ _) = "comma"
show (Pcolon _ _) = "colon"
show (Pdot _ _) = "dot"
show (PsemiSep _ _) = "semiSep"
show (PsemiSep1 _ _) = "semiSep1"
show (PcommaSep _ _) = "commaSep"
show (PcommaSep1 _ _) = "commaSep1"
liftF' :: ParsecF s u m a -> ParsecDSL s u m a
liftF' x = ParsecDSL $ Free (fmap pure x)
lifted :: P.ParsecT s u m a -> ParsecDSL s u m a
lifted p = liftF' $ Plifted p id
getState :: ParsecDSL s u m u
getState = liftF' $ PgetState id
putState :: u -> ParsecDSL s u m ()
putState u = liftF' $ PputState u ()
modifyState :: (u -> u) -> ParsecDSL s u m ()
modifyState g = liftF' $ PmodifyState g ()
getPosition :: ParsecDSL s u m P.SourcePos
getPosition = liftF' $ PgetPosition id
setPosition :: P.SourcePos -> ParsecDSL s u m ()
setPosition p = liftF' $ PsetPosition p ()
getInput :: ParsecDSL s u m s
getInput = liftF' $ PgetInput id
setInput :: s -> ParsecDSL s u m ()
setInput s = liftF' $ PsetInput s ()
getParserState :: ParsecDSL s u m (P.State s u)
getParserState = liftF' $ PgetParserState id
setParserState :: P.State s u -> ParsecDSL s u m (P.State s u)
setParserState s = liftF' $ PsetParserState s id
updateParserState :: (P.State s u -> P.State s u)
-> ParsecDSL s u m (P.State s u)
updateParserState g = liftF' $ PupdateParserState g id
tokens :: (P.Stream s m t, Eq t)
=> ([t] -> String)
-> (P.SourcePos -> [t] -> P.SourcePos)
-> [t]
-> ParsecDSL s u m [t]
tokens a b c = liftF' $ Ptokens a b c id
tokenPrimEx :: (P.Stream s m t)
=> (t -> String)
-> (P.SourcePos -> t -> s -> P.SourcePos)
-> Maybe (P.SourcePos -> t -> s -> u -> u)
-> (t -> Maybe a)
-> ParsecDSL s u m a
tokenPrimEx a b c d = liftF' $ PtokenPrimEx a b c d id
alphaNum :: P.Stream s m Char => ParsecDSL s u m Char
alphaNum = liftF' $ PalphaNum id
anyChar :: P.Stream s m Char => ParsecDSL s u m Char
anyChar = liftF' $ PanyChar id
anyToken :: (Show t, P.Stream s m t) => ParsecDSL s u m t
anyToken = liftF' $ PanyToken id
char :: P.Stream s m Char => Char -> ParsecDSL s u m Char
char x = liftF' $ Pchar x x
crlf :: P.Stream s m Char => ParsecDSL s u m Char
crlf = liftF' $ Pcrlf id
digit :: P.Stream s m Char => ParsecDSL s u m Char
digit = liftF' $ Pdigit id
endOfLine :: P.Stream s m Char => ParsecDSL s u m Char
endOfLine = liftF' $ PendOfLine id
eof :: (Show t, P.Stream s m t) => ParsecDSL s u m ()
eof = liftF' $ Peof ()
hexDigit :: P.Stream s m Char => ParsecDSL s u m Char
hexDigit = liftF' $ PhexDigit id
letter :: P.Stream s m Char => ParsecDSL s u m Char
letter = liftF' $ Pletter id
lower :: P.Stream s m Char => ParsecDSL s u m Char
lower = liftF' $ Plower id
newline :: P.Stream s m Char => ParsecDSL s u m Char
newline = liftF' $ Pnewline id
noneOf :: P.Stream s m Char => [Char] -> ParsecDSL s u m Char
noneOf xs = liftF' $ PnoneOf xs id
octDigit :: P.Stream s m Char => ParsecDSL s u m Char
octDigit = liftF' $ PoctDigit id
oneOf :: P.Stream s m Char => [Char] -> ParsecDSL s u m Char
oneOf xs = liftF' $ PoneOf xs id
parserFail :: String -> ParsecDSL s u m a
parserFail s = liftF' $ PparserFail s
parserZero :: ParsecDSL s u m a
parserZero = liftF' PparserZero
satisfy :: P.Stream s m Char => (Char -> Bool) -> ParsecDSL s u m Char
satisfy g = liftF' $ Psatisfy g id
space :: P.Stream s m Char => ParsecDSL s u m Char
space = liftF' $ Pspace id
spaces :: P.Stream s m Char => ParsecDSL s u m ()
spaces = liftF' $ Pspaces ()
string :: P.Stream s m Char => String -> ParsecDSL s u m String
string x = liftF' $ Pstring x x
tab :: P.Stream s m Char => ParsecDSL s u m Char
tab = liftF' $ Ptab id
upper :: P.Stream s m Char => ParsecDSL s u m Char
upper = liftF' $ Pupper id
unexpected :: String -> ParsecDSL s u m a
unexpected s = liftF' $ Punexpected s
parserPlus :: ParsecDSL s u m a -> ParsecDSL s u m a -> ParsecDSL s u m a
parserPlus p q = liftF' $ PparserPlus p q id
label :: ParsecDSL s u m a -> String -> ParsecDSL s u m a
label p a = liftF' $ Plabel p a id
labels :: ParsecDSL s u m a -> [String] -> ParsecDSL s u m a
labels p a = liftF' $ Plabels p a id
try :: ParsecDSL s u m a -> ParsecDSL s u m a
try p = liftF' $ Ptry p id
chainl :: ParsecDSL s u m a -> ParsecDSL s u m (a -> a -> a) -> a -> ParsecDSL s u m a
chainl p q a = liftF' $ Pchainl p q a id
chainl1 :: ParsecDSL s u m a -> ParsecDSL s u m (a -> a -> a) -> ParsecDSL s u m a
chainl1 p q = liftF' $ Pchainl1 p q id
chainr :: ParsecDSL s u m a -> ParsecDSL s u m (a -> a -> a) -> a -> ParsecDSL s u m a
chainr p q a = liftF' $ Pchainr p q a id
chainr1 :: ParsecDSL s u m a -> ParsecDSL s u m (a -> a -> a) -> ParsecDSL s u m a
chainr1 p q = liftF' $ Pchainr1 p q id
choice :: [ParsecDSL s u m a] -> ParsecDSL s u m a
choice xs = liftF' $ Pchoice xs id
count :: Int -> ParsecDSL s u m a -> ParsecDSL s u m [a]
count n p = liftF' $ Pcount n p id
lookAhead :: ParsecDSL s u m a -> ParsecDSL s u m a
lookAhead p = liftF' $ PlookAhead p id
many :: ParsecDSL s u m a -> ParsecDSL s u m [a]
many p = liftF' $ Pmany p id
many1 :: ParsecDSL s u m a -> ParsecDSL s u m [a]
many1 p = liftF' $ Pmany1 p id
manyAccum :: (a -> [a] -> [a]) -> ParsecDSL s u m a -> ParsecDSL s u m [a]
manyAccum acc p = liftF' $ PmanyAccum acc p id
notFollowedBy :: Show a => ParsecDSL s u m a -> ParsecDSL s u m ()
notFollowedBy p = liftF' $ PnotFollowedBy p ()
option :: a -> ParsecDSL s u m a -> ParsecDSL s u m a
option a p = liftF' $ Poption a p id
optionMaybe :: ParsecDSL s u m a -> ParsecDSL s u m (Maybe a)
optionMaybe p = liftF' $ PoptionMaybe p id
optional :: ParsecDSL s u m a -> ParsecDSL s u m ()
optional p = liftF' $ Poptional p ()
skipMany :: ParsecDSL s u m a -> ParsecDSL s u m ()
skipMany p = liftF' $ PskipMany p ()
skipMany1 :: ParsecDSL s u m a -> ParsecDSL s u m ()
skipMany1 p = liftF' $ PskipMany1 p ()
manyTill :: ParsecDSL s u m a -> ParsecDSL s u m end -> ParsecDSL s u m [a]
manyTill p e = liftF' $ PmanyTill p e id
between :: ParsecDSL s u m open -> ParsecDSL s u m close -> ParsecDSL s u m a
-> ParsecDSL s u m a
between o c p = liftF' $ Pbetween o c p id
endBy :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
endBy p s = liftF' $ PendBy p s id
endBy1 :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
endBy1 p s = liftF' $ PendBy1 p s id
sepBy :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
sepBy p s = liftF' $ PsepBy p s id
sepBy1 :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
sepBy1 p s = liftF' $ PsepBy1 p s id
sepEndBy :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
sepEndBy p s = liftF' $ PsepEndBy p s id
sepEndBy1 :: ParsecDSL s u m a -> ParsecDSL s u m sep -> ParsecDSL s u m [a]
sepEndBy1 p s = liftF' $ PsepEndBy1 p s id