Safe Haskell | None |
---|
A module providing simple Parser combinator functionality. Useful for small parsing tasks such as identifier parsing or command-line argument parsing
- module SimpleH
- newtype ParserT w s m a = ParserT (StateT s (ListT (WriterT w m)) a)
- type Parser w c a = ParserT w c Id a
- newtype ParserA w m s a = ParserA (ParserT w s m a)
- _ParserA :: Iso (ParserA w m s a) (ParserA w' m' s' a') (ParserT w s m a) (ParserT w' s' m' a')
- class Stream c s | s -> c where
- empty :: Stream c s => s -> Bool
- parserT :: (Functor n, Functor m) => Iso (ParserT w s m a) (ParserT x t n b) (s -> m (w, [(s, a)])) (t -> n (x, [(t, b)]))
- parser :: Iso (Parser w s a) (Parser x t b) (s -> (w, [(s, a)])) (t -> (x, [(t, b)]))
- runParser :: Parser Void s a -> s -> [(s, a)]
- pureParser :: (Monoid w, Monad m) => (a -> [b]) -> ParserT w a m b
- (<+>) :: Semigroup m => m -> m -> m
- (>*>) :: (Monoid w, Monad m) => ParserT w a m b -> ParserT w b m c -> ParserT w a m c
- token :: (Monad m, Monoid w, Stream c s) => ParserT w s m c
- satisfy :: (Monoid w, Monad m, Stream c s) => (c -> Bool) -> ParserT w s m c
- remaining :: (Monad m, Monoid w) => ParserT w s m s
- oneOf :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m c
- noneOf :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m c
- single :: (Eq c, Monoid w, Monad m, Stream c s) => c -> ParserT w s m ()
- several :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m ()
- eoi :: (Monad m, Monoid w, Stream c s) => ParserT w s m ()
- many :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m [a]
- many1 :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m [a]
- sepBy :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m b -> ParserT w c m [a]
- sepBy1 :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m b -> ParserT w c m [a]
- chainl :: (Monoid w, Stream c s, Monad m) => ParserT w s m a -> ParserT w s m (a -> b -> a) -> ParserT w s m b -> ParserT w s m a
- chainr :: (Monoid w, Stream c s, Monad m) => ParserT w s m a -> ParserT w s m (b -> a -> a) -> ParserT w s m b -> ParserT w s m a
Documentation
module SimpleH
The ParserT Type
newtype ParserT w s m a Source
(Monad m, Monoid w) => MonadError Void (ParserT w c m) | |
(Monoid w, Monad m) => MonadWriter w (ParserT w s m) | |
(Monoid w, Monad m) => MonadState s (ParserT w s m) | |
Monoid w => MonadTrans (ParserT w s) | |
(Unit m, Monoid w) => Unit (ParserT w s m) | |
(Monoid w, Monad m) => Monad (ParserT w s m) | |
(Monoid w, Monad m) => Applicative (ParserT w s m) | |
Functor m => Functor (ParserT w s m) | |
(Monoid w, MonadFix m) => MonadFix (ParserT w s m) | |
(Monoid w, Monad m) => Monoid (ParserT w s m a) | |
(Monoid w, Monad m) => Semigroup (ParserT w s m a) |
_ParserA :: Iso (ParserA w m s a) (ParserA w' m' s' a') (ParserT w s m a) (ParserT w' s' m' a')Source
The Stream class
Converting to/from Parsers
parserT :: (Functor n, Functor m) => Iso (ParserT w s m a) (ParserT x t n b) (s -> m (w, [(s, a)])) (t -> n (x, [(t, b)]))Source
pureParser :: (Monoid w, Monad m) => (a -> [b]) -> ParserT w a m bSource
Basic utilities
satisfy :: (Monoid w, Monad m, Stream c s) => (c -> Bool) -> ParserT w s m cSource
Consume a token and succeed if it verifies a predicate
oneOf :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m cSource
Parse a member of a set of values
noneOf :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m cSource
Parse anything but a member of a set
single :: (Eq c, Monoid w, Monad m, Stream c s) => c -> ParserT w s m ()Source
Consume a single fixed token or fail.
several :: (Eq c, Monoid w, Monad m, Foldable t, Stream c s) => t c -> ParserT w s m ()Source
Consume a structure of characters or fail
eoi :: (Monad m, Monoid w, Stream c s) => ParserT w s m ()Source
Succeed only if we are at the End Of Input.
Basic combinators
many :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m [a]Source
Parse zero, one or more successive occurences of a parser.
many1 :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m [a]Source
Parse one or more successiveé occurences of a parser.
sepBy :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m b -> ParserT w c m [a]Source
Parse zero or more successive occurences of a parser separated by occurences of a second parser.
sepBy1 :: (Monoid w, Monad m) => ParserT w c m a -> ParserT w c m b -> ParserT w c m [a]Source
Parse one or more successive occurences of a parser separated by occurences of a second parser.