Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Parser
Contents
Description
A module providing simple Parser combinator functionality. Useful for small parsing tasks such as identifier parsing or command-line argument parsing
- module Definitive
- newtype ParserT s m a = ParserT (StateT s (LogicT m) a)
- type Parser c a = ParserT c Id a
- newtype ParserA m s a = ParserA (ParserT s m a)
- i'ParserA :: Iso (ParserA m s a) (ParserA m' s' a') (ParserT s m a) (ParserT s' m' a')
- class Stream c s | s -> c where
- emptyStream :: Stream c s => s -> Bool
- parserT :: (Monad n, Monad m) => Iso (ParserT s m a) (ParserT t n b) (s -> m [(s, a)]) (t -> n [(t, b)])
- parser :: Iso (Parser s a) (Parser t b) (s -> [(s, a)]) (t -> [(t, b)])
- ioParser :: Parser a b -> a -> IO b
- (<+>) :: Semigroup m => m -> m -> m
- (>*>) :: Monad m => ParserT a m b -> ParserT b m c -> ParserT a m c
- (<*<) :: Monad m => ParserT b m c -> ParserT a m b -> ParserT a m c
- cut :: Monad m => ParserT s m a -> ParserT s m a
- token :: (Monad m, Stream c s) => ParserT s m c
- satisfy :: (Monad m, Stream c s) => (c -> Bool) -> ParserT s m c
- oneOf :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m c
- noneOf :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m c
- single :: (Eq c, Monad m, Stream c s) => c -> ParserT s m ()
- several :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m ()
- remaining :: Monad m => ParserT s m s
- eoi :: (Monad m, Stream c s) => ParserT s m ()
- readable :: (Monad m, Read a) => ParserT String m a
- number :: (Monad m, Stream Char s, Num n) => ParserT s m n
- digit :: (Monad m, Stream Char s) => ParserT s m Char
- letter :: (Monad m, Stream Char s) => ParserT s m Char
- alNum :: (Monad m, Stream Char s) => ParserT s m Char
- quotedString :: (Monad m, Stream Char s) => Char -> ParserT s m String
- space :: (Monad m, Stream Char s) => ParserT s m Char
- spaces :: (Monad m, Stream Char s) => ParserT s m String
- eol :: (Monad m, Stream Char s) => ParserT s m ()
- many :: Monad m => ParserT c m a -> ParserT c m [a]
- many1 :: Monad m => ParserT c m a -> ParserT c m [a]
- sepBy :: Monad m => ParserT c m a -> ParserT c m b -> ParserT c m [a]
- sepBy1 :: Monad m => ParserT c m a -> ParserT c m b -> ParserT c m [a]
- skipMany :: Monad m => ParserT c m a -> ParserT c m ()
- skipMany1 :: Monad m => ParserT c m a -> ParserT c m ()
- chainl :: (Stream c s, Monad m) => ParserT s m a -> ParserT s m (a -> b -> a) -> ParserT s m b -> ParserT s m a
- chainr :: (Stream c s, Monad m) => ParserT s m a -> ParserT s m (b -> a -> a) -> ParserT s m b -> ParserT s m a
- option :: Monad m => a -> ParserT s m a -> ParserT s m a
Documentation
module Definitive
The ParserT Type
Instances
Monad m => MonadState s (ParserT s m) | |
MonadTrans (ParserT s) | |
ConcreteMonad (ParserT s) | |
Functor (ParserT s m) | |
Applicative (ParserT s m) | |
Monad m => Monad (ParserT s m) | |
Monad m => MonadFix (ParserT s m) | |
Unit (ParserT s m) | |
(Monad m, Stream Char s) => IsString (ParserT s m a) | |
Semigroup (ParserT s m a) | |
Monoid (ParserT s m a) |
The Stream class
class Stream c s | s -> c where
emptyStream :: Stream c s => s -> Bool Source
Test if a Stream is empty
Converting to/from Parsers
parserT :: (Monad n, Monad m) => Iso (ParserT s m a) (ParserT t n b) (s -> m [(s, a)]) (t -> n [(t, b)]) Source
Basic combinators
satisfy :: (Monad m, Stream c s) => (c -> Bool) -> ParserT s m c Source
Consume a token and succeed if it verifies a predicate
oneOf :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m c Source
Parse a member of a set of values
noneOf :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m c Source
Parse anything but a member of a set
single :: (Eq c, Monad m, Stream c s) => c -> ParserT s m () Source
Consume a single fixed token or fail.
several :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m () Source
Consume a structure of characters or fail
Specialized utilities
quotedString :: (Monad m, Stream Char s) => Char -> ParserT s m String Source
Parse a delimited string, using \\
as the quoting character
Basic combinators
many :: Monad m => ParserT c m a -> ParserT c m [a] Source
Parse zero, one or more successive occurences of a parser.
many1 :: Monad m => ParserT c m a -> ParserT c m [a] Source
Parse one or more successiveé occurences of a parser.
sepBy :: Monad m => ParserT c m a -> ParserT c m b -> ParserT c m [a] infixl 1 Source
Parse zero or more successive occurences of a parser separated by occurences of a second parser.
sepBy1 :: Monad m => ParserT c m a -> ParserT c m b -> ParserT c m [a] infixl 1 Source
Parse one or more successive occurences of a parser separated by occurences of a second parser.
chainl :: (Stream c s, Monad m) => ParserT s m a -> ParserT s m (a -> b -> a) -> ParserT s m b -> ParserT s m a Source
Chain an operator with an initial value