mini-1.0.1.0: Minimal essentials
Safe HaskellSafe-Inferred
LanguageHaskell2010

Mini.Transformers.ParserT

Description

Extend a monad with the ability to parse symbol sequences

Synopsis

Types

newtype ParserT s m a Source #

A transformer parsing symbols s, inner monad m, return a

Constructors

ParserT ([s] -> m (Either [ParseError s] (a, [s]))) 

Instances

Instances details
MonadTrans (ParserT s) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

lift :: Monad m => m a -> ParserT s m a Source #

(Monad m, Eq s) => Alternative (ParserT s m) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

empty :: ParserT s m a #

(<|>) :: ParserT s m a -> ParserT s m a -> ParserT s m a #

some :: ParserT s m a -> ParserT s m [a] #

many :: ParserT s m a -> ParserT s m [a] #

Monad m => Applicative (ParserT s m) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

pure :: a -> ParserT s m a #

(<*>) :: ParserT s m (a -> b) -> ParserT s m a -> ParserT s m b #

liftA2 :: (a -> b -> c) -> ParserT s m a -> ParserT s m b -> ParserT s m c #

(*>) :: ParserT s m a -> ParserT s m b -> ParserT s m b #

(<*) :: ParserT s m a -> ParserT s m b -> ParserT s m a #

Monad m => Functor (ParserT s m) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

fmap :: (a -> b) -> ParserT s m a -> ParserT s m b #

(<$) :: a -> ParserT s m b -> ParserT s m a #

Monad m => Monad (ParserT s m) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

(>>=) :: ParserT s m a -> (a -> ParserT s m b) -> ParserT s m b #

(>>) :: ParserT s m a -> ParserT s m b -> ParserT s m b #

return :: a -> ParserT s m a #

(Monad m, Monoid a) => Monoid (ParserT s m a) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

mempty :: ParserT s m a #

mappend :: ParserT s m a -> ParserT s m a -> ParserT s m a #

mconcat :: [ParserT s m a] -> ParserT s m a #

(Monad m, Semigroup a) => Semigroup (ParserT s m a) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Methods

(<>) :: ParserT s m a -> ParserT s m a -> ParserT s m a #

sconcat :: NonEmpty (ParserT s m a) -> ParserT s m a #

stimes :: Integral b => b -> ParserT s m a -> ParserT s m a #

data ParseError s Source #

Abstract representation of a parse error for symbols s

Instances

Instances details
Show s => Show (ParseError s) Source # 
Instance details

Defined in Mini.Transformers.ParserT

Runner

runParserT :: ParserT s m a -> [s] -> m (Either [ParseError s] (a, [s])) Source #

Unwrap a ParserT computation with a sequence of symbols to parse

Parsers

sat :: Applicative m => (s -> Bool) -> ParserT s m s Source #

Parse symbols satisfying a predicate

item :: Applicative m => ParserT s m s Source #

Parse any symbol

symbol :: (Applicative m, Eq s) => s -> ParserT s m s Source #

Parse a symbol

string :: (Monad m, Traversable t, Eq s) => t s -> ParserT s m (t s) Source #

Parse a sequence of symbols

oneOf :: (Applicative m, Foldable t, Eq s) => t s -> ParserT s m s Source #

Parse symbols included in a collection

noneOf :: (Applicative m, Foldable t, Eq s) => t s -> ParserT s m s Source #

Parse symbols excluded from a collection

Combinators

sepBy :: (Monad m, Eq s) => ParserT s m a -> ParserT s m b -> ParserT s m [a] Source #

Parse zero or more p separated by q via p `sepBy` q

sepBy1 :: (Monad m, Eq s) => ParserT s m a -> ParserT s m b -> ParserT s m [a] Source #

Parse one or more p separated by q via p `sepBy1` q

endBy :: (Monad m, Eq s) => ParserT s m a -> ParserT s m b -> ParserT s m [a] Source #

Parse zero or more p separated and ended by q via p `endBy` q

endBy1 :: (Monad m, Eq s) => ParserT s m a -> ParserT s m b -> ParserT s m [a] Source #

Parse one or more p separated and ended by q via p `endBy1` q

between :: Monad m => ParserT s m open -> ParserT s m close -> ParserT s m a -> ParserT s m a Source #

Parse p enclosed by a and b via between a b p

option :: (Monad m, Eq s) => a -> ParserT s m a -> ParserT s m a Source #

Parse p returning a in case of failure via option a p