appar-0.1.8: A simple applicative parser

Safe Haskell | Safe
Language | Haskell98

Text.Appar.ByteString

Contents

- Documentation
  - Parser type
  - Running parser
  - `Char` parsers
  - `String` parser
  - Parser combinators
  - `Applicative` parser combinators
  - Internals

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

- type Parser = MkParser ByteString
- parse :: Input inp => MkParser inp a -> inp -> Maybe a
- char :: Input inp => Char -> MkParser inp Char
- anyChar :: Input inp => MkParser inp Char
- oneOf :: Input inp => String -> MkParser inp Char
- noneOf :: Input inp => String -> MkParser inp Char
- alphaNum :: Input inp => MkParser inp Char
- digit :: Input inp => MkParser inp Char
- hexDigit :: Input inp => MkParser inp Char
- space :: Input inp => MkParser inp Char
- string :: Input inp => String -> MkParser inp String
- try :: MkParser inp a -> MkParser inp a
- choice :: [MkParser inp a] -> MkParser inp a
- option :: a -> MkParser inp a -> MkParser inp a
- skipMany :: MkParser inp a -> MkParser inp ()
- skipSome :: MkParser inp a -> MkParser inp ()
- sepBy1 :: MkParser inp a -> MkParser inp b -> MkParser inp [a]
- manyTill :: MkParser inp a -> MkParser inp b -> MkParser inp [a]
- (<$>) :: 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
- data MkParser inp a = P {
  - runParser :: inp -> (Maybe a, inp)
  }
- class Eq inp => Input inp where
  - car :: inp -> Char
  - cdr :: inp -> inp
  - nil :: inp
  - isNil :: inp -> Bool
- satisfy :: Input inp => (Char -> Bool) -> MkParser inp Char

# 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

Instances details

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

Instances details

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.