appar-0.1.8: A simple applicative parser

Safe HaskellSafe
LanguageHaskell98

Text.Appar.ByteString

Contents

Description

Simple Applicative parser whose input is strict ByteString. The usage is the same as parsec.

Parsec 3 provides features which Parsec 2 does not provide:

  • Applicative style
  • ByteString as input

But Haskell Platform includes Parsec 2, not Parsec 3. Installing Parsec 3 to Haskell Platform environment makes it mess. So, this library was implemented.

Synopsis

Documentation

Parser type

type Parser = MkParser ByteString Source #

Parser synonym for strict ByteString.

Running parser

parse :: Input inp => MkParser inp a -> inp -> Maybe a Source #

Run a parser.

Char parsers

char :: Input inp => Char -> MkParser inp Char Source #

char c parses a single character c. Returns the parsed character.

anyChar :: Input inp => MkParser inp Char Source #

This parser succeeds for any character. Returns the parsed character.

oneOf :: Input inp => String -> MkParser inp Char Source #

oneOf cs succeeds if the current character is in the supplied list of characters cs. Returns the parsed character.

noneOf :: Input inp => String -> MkParser inp Char Source #

As the dual of oneOf, noneOf cs succeeds if the current character not in the supplied list of characters cs. Returns the parsed character.

alphaNum :: Input inp => MkParser inp Char Source #

Parses a letter or digit (a character between '0' and '9'). Returns the parsed character.

digit :: Input inp => MkParser inp Char Source #

Parses a digit. Returns the parsed character.

hexDigit :: Input inp => MkParser inp Char Source #

Parses a hexadecimal digit (a digit or a letter between 'a' and 'f' or 'A' and 'F'). Returns the parsed character.

space :: Input inp => MkParser inp Char Source #

Parses a white space character (any character which satisfies isSpace) Returns the parsed character.

String parser

string :: Input inp => String -> MkParser inp String Source #

string s parses a sequence of characters given by s. Returns the parsed string

Parser combinators

try :: MkParser inp a -> MkParser inp a Source #

The parser try p behaves like parser p, except that it pretends that it hasn't consumed any input when an error occurs.

choice :: [MkParser inp a] -> MkParser inp a Source #

choice ps tries to apply the parsers in the list ps in order, until one of them succeeds. Returns the value of the succeeding parser.

option :: a -> MkParser inp a -> MkParser inp a Source #

option x p tries to apply parser p. If p fails without consuming input, it returns the value x, otherwise the value returned by p.

skipMany :: MkParser inp a -> MkParser inp () Source #

skipMany p applies the parser p zero or more times, skipping its result.

skipSome :: MkParser inp a -> MkParser inp () Source #

skipSome p applies the parser p one or more times, skipping its result.

sepBy1 :: MkParser inp a -> MkParser inp b -> MkParser inp [a] Source #

sepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p.

manyTill :: MkParser inp a -> MkParser inp b -> MkParser inp [a] Source #

manyTill p end applies parser p zero or more times until parser end succeeds. Returns the list of values returned by p.

Applicative parser combinators

(<$>) :: Functor f => (a -> b) -> f a -> f b #

(<$) :: Functor f => a -> f b -> f a #

(<*>) :: Applicative f => f (a -> b) -> f a -> f b #

(*>) :: Applicative f => f a -> f b -> f b #

(<*) :: Applicative f => f a -> f b -> f a #

(<**>) :: Applicative f => f a -> f (a -> b) -> f b #

(<|>) :: Alternative f => f a -> f a -> f a #

some :: Alternative f => f a -> f [a] #

many :: Alternative f => f a -> f [a] #

pure :: Applicative f => a -> f a #

Internals

data MkParser inp a Source #

Constructors

P 

Fields

  • runParser :: inp -> (Maybe a, inp)

    Getting the internal parser.

Instances
Monad (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

(>>=) :: MkParser inp a -> (a -> MkParser inp b) -> MkParser inp b

(>>) :: MkParser inp a -> MkParser inp b -> MkParser inp b

return :: a -> MkParser inp a

fail :: String -> MkParser inp a

Functor (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

fmap :: (a -> b) -> MkParser inp a -> MkParser inp b

(<$) :: a -> MkParser inp b -> MkParser inp a #

MonadFail (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

fail :: String -> MkParser inp a

Applicative (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

pure :: a -> MkParser inp a #

(<*>) :: MkParser inp (a -> b) -> MkParser inp a -> MkParser inp b #

liftA2 :: (a -> b -> c) -> MkParser inp a -> MkParser inp b -> MkParser inp c

(*>) :: MkParser inp a -> MkParser inp b -> MkParser inp b #

(<*) :: MkParser inp a -> MkParser inp b -> MkParser inp a #

Alternative (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

empty :: MkParser inp a

(<|>) :: MkParser inp a -> MkParser inp a -> MkParser inp a #

some :: MkParser inp a -> MkParser inp [a] #

many :: MkParser inp a -> MkParser inp [a] #

MonadPlus (MkParser inp) Source # 
Instance details

Defined in Text.Appar.Parser

Methods

mzero :: MkParser inp a

mplus :: MkParser inp a -> MkParser inp a -> MkParser inp a

class Eq inp => Input inp where Source #

The class for parser input.

Methods

car :: inp -> Char Source #

The head function for input

cdr :: inp -> inp Source #

The tail function for input

nil :: inp Source #

The end of input

isNil :: inp -> Bool Source #

The function to check the end of input

Instances
Input String Source # 
Instance details

Defined in Text.Appar.Input

Methods

car :: String -> Char Source #

cdr :: String -> String Source #

nil :: String Source #

isNil :: String -> Bool Source #

Input ByteString Source # 
Instance details

Defined in Text.Appar.Input

Methods

car :: ByteString -> Char Source #

cdr :: ByteString -> ByteString Source #

nil :: ByteString Source #

isNil :: ByteString -> Bool Source #

Input ByteString Source # 
Instance details

Defined in Text.Appar.Input

Methods

car :: ByteString -> Char Source #

cdr :: ByteString -> ByteString Source #

nil :: ByteString Source #

isNil :: ByteString -> Bool Source #

satisfy :: Input inp => (Char -> Bool) -> MkParser inp Char Source #

The parser satisfy f succeeds for any character for which the supplied function f returns True. Returns the character that is actually parsed.