definitive-parser-1.2: A parser combinator library for the Definitive framework

Safe HaskellNone

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

Synopsis

Documentation

module Definitive

The ParserT Type

newtype ParserT s m a Source

Constructors

ParserT (StateT s (ListT m) a) 

Instances

Monad m => MonadState s (ParserT s m) 
MonadWriter w m => MonadWriter w (ParserT s m) 
Monad m => MonadError Void (ParserT c m) 
MonadTrans (ParserT s) 
ConcreteMonad (ParserT s) 
Functor m => Functor (ParserT s m) 
Monad m => Applicative (ParserT s m) 
Monad m => Monad (ParserT s m) 
MonadFix m => MonadFix (ParserT s m) 
Monad m => MonadList (ParserT s m) 
Unit m => Unit (ParserT s m) 
Applicative m => Semigroup (ParserT s m a) 
Applicative m => Monoid (ParserT s m a) 

type Parser c a = ParserT c Id aSource

newtype ParserA m s a Source

Constructors

ParserA (ParserT s m a) 

Instances

Monad m => Arrow (ParserA m) 
Monad m => Category (ParserA m) 
Monad m => Choice (ParserA m) 
Monad m => Split (ParserA m) 

_ParserA :: Iso (ParserA m s a) (ParserA m' s' a') (ParserT s m a) (ParserT s' m' a')Source

The Stream class

class Stream c s | s -> c where

Methods

uncons :: s -> Maybe (c, s)

cons :: c -> s -> s

Instances

emptyStream :: Stream c s => s -> BoolSource

Test if a Stream is empty

Converting to/from Parsers

parserT :: (Functor n, Functor m) => Iso (ParserT s m a) (ParserT t n b) (s -> m [(s, a)]) (t -> n [(t, b)])Source

parser :: Iso (Parser s a) (Parser t b) (s -> [(s, a)]) (t -> [(t, b)])Source

ioParser :: Parser a b -> a -> IO bSource

Basic combinators

(<+>) :: Semigroup m => m -> m -> mSource

The (+) operator with lower priority

(>*>) :: Monad m => ParserT a m b -> ParserT b m c -> ParserT a m cSource

(<*<) :: Monad m => ParserT b m c -> ParserT a m b -> ParserT a m cSource

cut :: Monad m => ParserT s m a -> ParserT s m aSource

token :: (Monad m, Stream c s) => ParserT s m cSource

Consume a token from the Stream

satisfy :: (Monad m, Stream c s) => (c -> Bool) -> ParserT s m cSource

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 cSource

Parse a member of a set of values

noneOf :: (Eq c, Monad m, Foldable t, Stream c s) => t c -> ParserT s m cSource

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

remaining :: Monad m => ParserT s m sSource

The remaining Stream to parse

eoi :: (Monad m, Stream c s) => ParserT s m ()Source

Succeed only at the End Of Input.

Specialized utilities

number :: (Monad m, Stream Char s, Num n) => ParserT s m nSource

Parse a litteral decimal number

digit :: (Monad m, Stream Char s) => ParserT s m CharSource

Parse a single decimal digit

quotedString :: (Monad m, Stream Char s) => Char -> ParserT s m StringSource

Parse a delimited string, unsing \\ as the quoting character

space :: (Monad m, Stream Char s) => ParserT s m CharSource

A single space

spaces :: (Monad m, Stream Char s) => ParserT s m StringSource

Many spaces

eol :: (Monad m, Stream Char s) => ParserT s m ()Source

The end of a line

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]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]Source

Parse one or more successive occurences of a parser separated by occurences of a second parser.

skipMany :: Monad m => ParserT c m a -> ParserT c m ()Source

Skip many occurences of a parser

skipMany1 :: Monad m => ParserT c m a -> ParserT c m ()Source

Skip multiple occurences of a parser

chainl :: (Stream c s, Monad m) => ParserT s m a -> ParserT s m (a -> b -> a) -> ParserT s m b -> ParserT s m aSource

Chain an operator with an initial value

chainr :: (Stream c s, Monad m) => ParserT s m a -> ParserT s m (b -> a -> a) -> ParserT s m b -> ParserT s m aSource

Chain an operator with an initial value and several tail values.

option :: Monad m => a -> ParserT s m a -> ParserT s m aSource

Try to consume a parser. Return a default value when it fails.