maam-0.2.0.0: An application of the Galois Transformers framework to two example semantics.

Safe HaskellNone
LanguageHaskell2010

FP.Parser

Documentation

class (Monad m, MonadBot m, MonadAppend m, MonadState (ParserState t) m) => MonadParser t m | m -> t Source

Instances

end :: MonadParser t m => m () Source

final :: MonadParser t m => m a -> m a Source

satisfies :: MonadParser t m => (t -> Bool) -> m t Source

pluck :: MonadParser t m => m t Source

lit :: (MonadParser t m, Eq t) => t -> m t Source

word :: (MonadParser t m, Eq t) => [t] -> m [t] Source

newtype Parser t a Source

Constructors

Parser 

Fields

unParser :: StateT (ParserState t) (ListT ID) a
 

runParser :: [t] -> Parser t a -> [(ParserState t, a)] Source

data ParseError t a Source

Constructors

ParsingError 
AmbiguousParse [a] 

Instances

Pretty [a0] => Pretty (ParseError k t a) 

parseFinal :: Parser t a -> [t] -> ParseError t a :+: a Source

parseFinalOn :: [t] -> Parser t a -> ParseError t a :+: a Source

tokenize :: Parser c a -> [c] -> [c] :+: [a] Source

data LexParseError c t a Source

Constructors

LexingError [c] 
LexParsingError [t] 
LexAmbiguousParse ([t], [a]) 

Instances

(Pretty [c0], Pretty [t0], Pretty ([t0], [a0])) => Pretty (LexParseError c t a) 

lexParseFinal :: forall c t a. (Pretty c, Pretty t) => Parser c t -> (t -> Bool) -> Parser t a -> [c] -> LexParseError c t a :+: a Source

data Mix m a Source

Constructors

Pre (m (a -> a)) 
Post (m (a -> a)) 
Inf (m (a -> a -> a)) 
InfL (m (a -> a -> a)) 
InfR (m (a -> a -> a)) 

infRL :: forall m a. Prism (Mix m a) (m (a -> a -> a)) Source

infLL :: forall m a. Prism (Mix m a) (m (a -> a -> a)) Source

infL :: forall m a. Prism (Mix m a) (m (a -> a -> a)) Source

postL :: forall m a. Prism (Mix m a) (m (a -> a)) Source

preL :: forall m a. Prism (Mix m a) (m (a -> a)) Source

data Level m a Source

Constructors

Level 

Fields

levelPre :: m (a -> a)
 
levelPost :: m (a -> a)
 
levelInf :: m (a -> a -> a)
 
levelInfL :: m (a -> a -> a)
 
levelInfR :: m (a -> a -> a)
 

splitMixes :: MonadParser t m => [Mix m a] -> Level m a Source

pre :: Monad m => (b -> a -> a) -> m b -> Mix m a Source

post :: Monad m => (a -> b -> a) -> m b -> Mix m a Source

inf' :: Monad m => (a -> b -> a -> a) -> m b -> m (a -> a -> a) Source

inf :: Monad m => (a -> b -> a -> a) -> m b -> Mix m a Source

infl :: Monad m => (a -> b -> a -> a) -> m b -> Mix m a Source

infr :: Monad m => (a -> b -> a -> a) -> m b -> Mix m a Source

between :: MonadParser t m => m () -> m () -> m a -> m a Source

buildMix :: MonadParser t m => [m a] -> Map Int [Mix m a] -> m a Source

buildLevel :: MonadParser t m => m a -> Level m a -> m a Source

buildMixPre :: MonadParser t m => m a -> m (a -> a) -> m a Source

buildMixPost :: MonadParser t m => m (a -> a) -> m (a -> a) Source

buildMixInf :: MonadParser t m => m a -> m (a -> a -> a) -> m (a -> a) Source

buildMixInfL :: MonadParser t m => m a -> m (a -> a -> a) -> m (a -> a) Source

buildMixInfR :: MonadParser t m => m a -> m (a -> a -> a) -> m (a -> a) Source