attoparsec-0.13.2.0: Fast combinator parsing for bytestrings and text

CopyrightBryan O'Sullivan 2007-2015
LicenseBSD3
Maintainerbos@serpentine.com
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell98

Data.Attoparsec.Internal.Types

Description

Simple, efficient parser combinators, loosely based on the Parsec library.

Synopsis

Documentation

newtype Parser i a Source #

The core parser type. This is parameterised over the type i of string being processed.

This type is an instance of the following classes:

  • Monad, where fail throws an exception (i.e. fails) with an error message.
  • Functor and Applicative, which follow the usual definitions.
  • MonadPlus, where mzero fails (with no error message) and mplus executes the right-hand parser if the left-hand one fails. When the parser on the right executes, the input is reset to the same state as the parser on the left started with. (In other words, attoparsec is a backtracking parser that supports arbitrary lookahead.)
  • Alternative, which follows MonadPlus.

Constructors

Parser 

Fields

Instances

Monad (Parser i) Source # 

Methods

(>>=) :: Parser i a -> (a -> Parser i b) -> Parser i b #

(>>) :: Parser i a -> Parser i b -> Parser i b #

return :: a -> Parser i a #

fail :: String -> Parser i a #

Functor (Parser i) Source # 

Methods

fmap :: (a -> b) -> Parser i a -> Parser i b #

(<$) :: a -> Parser i b -> Parser i a #

MonadFail (Parser i) Source # 

Methods

fail :: String -> Parser i a #

Applicative (Parser i) Source # 

Methods

pure :: a -> Parser i a #

(<*>) :: Parser i (a -> b) -> Parser i a -> Parser i b #

(*>) :: Parser i a -> Parser i b -> Parser i b #

(<*) :: Parser i a -> Parser i b -> Parser i a #

Alternative (Parser i) Source # 

Methods

empty :: Parser i a #

(<|>) :: Parser i a -> Parser i a -> Parser i a #

some :: Parser i a -> Parser i [a] #

many :: Parser i a -> Parser i [a] #

MonadPlus (Parser i) Source # 

Methods

mzero :: Parser i a #

mplus :: Parser i a -> Parser i a -> Parser i a #

Semigroup (Parser i a) Source # 

Methods

(<>) :: Parser i a -> Parser i a -> Parser i a #

sconcat :: NonEmpty (Parser i a) -> Parser i a #

stimes :: Integral b => b -> Parser i a -> Parser i a #

Monoid (Parser i a) Source # 

Methods

mempty :: Parser i a #

mappend :: Parser i a -> Parser i a -> Parser i a #

mconcat :: [Parser i a] -> Parser i a #

type family State i Source #

Instances

type Failure i t r = t -> Pos -> More -> [String] -> String -> IResult i r Source #

type Success i t a r = t -> Pos -> More -> a -> IResult i r Source #

newtype Pos Source #

Constructors

Pos 

Fields

Instances

Eq Pos Source # 

Methods

(==) :: Pos -> Pos -> Bool #

(/=) :: Pos -> Pos -> Bool #

Num Pos Source # 

Methods

(+) :: Pos -> Pos -> Pos #

(-) :: Pos -> Pos -> Pos #

(*) :: Pos -> Pos -> Pos #

negate :: Pos -> Pos #

abs :: Pos -> Pos #

signum :: Pos -> Pos #

fromInteger :: Integer -> Pos #

Ord Pos Source # 

Methods

compare :: Pos -> Pos -> Ordering #

(<) :: Pos -> Pos -> Bool #

(<=) :: Pos -> Pos -> Bool #

(>) :: Pos -> Pos -> Bool #

(>=) :: Pos -> Pos -> Bool #

max :: Pos -> Pos -> Pos #

min :: Pos -> Pos -> Pos #

Show Pos Source # 

Methods

showsPrec :: Int -> Pos -> ShowS #

show :: Pos -> String #

showList :: [Pos] -> ShowS #

data IResult i r Source #

The result of a parse. This is parameterised over the type i of string that was processed.

This type is an instance of Functor, where fmap transforms the value in a Done result.

Constructors

Fail i [String] String

The parse failed. The i parameter is the input that had not yet been consumed when the failure occurred. The [String] is a list of contexts in which the error occurred. The String is the message describing the error, if any.

Partial (i -> IResult i r)

Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, pass an empty string to the continuation.

Note: if you get a Partial result, do not call its continuation more than once.

Done i r

The parse succeeded. The i parameter is the input that had not yet been consumed (if any) when the parse succeeded.

Instances

Functor (IResult i) Source # 

Methods

fmap :: (a -> b) -> IResult i a -> IResult i b #

(<$) :: a -> IResult i b -> IResult i a #

(Show i, Show r) => Show (IResult i r) Source # 

Methods

showsPrec :: Int -> IResult i r -> ShowS #

show :: IResult i r -> String #

showList :: [IResult i r] -> ShowS #

(NFData i, NFData r) => NFData (IResult i r) Source # 

Methods

rnf :: IResult i r -> () #

data More Source #

Have we read all available input?

Constructors

Complete 
Incomplete 

Instances

Eq More Source # 

Methods

(==) :: More -> More -> Bool #

(/=) :: More -> More -> Bool #

Show More Source # 

Methods

showsPrec :: Int -> More -> ShowS #

show :: More -> String #

showList :: [More] -> ShowS #

Semigroup More Source # 

Methods

(<>) :: More -> More -> More #

sconcat :: NonEmpty More -> More #

stimes :: Integral b => b -> More -> More #

Monoid More Source # 

Methods

mempty :: More #

mappend :: More -> More -> More #

mconcat :: [More] -> More #

(<>) :: Semigroup a => a -> a -> a #

An associative operation.

(a <> b) <> c = a <> (b <> c)

If a is also a Monoid we further require

(<>) = mappend

class Monoid c => Chunk c where Source #

A common interface for input chunks.

Associated Types

type ChunkElem c Source #

Methods

nullChunk :: c -> Bool Source #

Test if the chunk is empty.

pappendChunk :: State c -> c -> State c Source #

Append chunk to a buffer.

atBufferEnd :: c -> State c -> Pos Source #

Position at the end of a buffer. The first argument is ignored.

bufferElemAt :: c -> Pos -> State c -> Maybe (ChunkElem c, Int) Source #

Return the buffer element at the given position along with its length.

chunkElemToChar :: c -> ChunkElem c -> Char Source #

Map an element to the corresponding character. The first argument is ignored.