Data.Attoparsec.Types

attoparsec-0.13.1.0: Fast combinator parsing for bytestrings and text

Copyright | Bryan O'Sullivan 2007-2015
License | BSD3
Maintainer | bos@serpentine.com
Stability | experimental
Portability | unknown
Safe Haskell | None
Language | Haskell98

Data.Attoparsec.Types

Description

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

Synopsis

- data Parser i a
- data IResult i r
  - = Fail i [String] String
  - | Partial (i -> IResult i r)
  - | Done i r
- class Monoid c => Chunk c where

# Documentation

data Parser i a #

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

Instances

Monad (Parser i) # |
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) # |
Methods fmap :: (a -> b) -> Parser i a -> Parser i b # (<$) :: a -> Parser i b -> Parser i a #
MonadFail (Parser i) # |
Methods fail :: String -> Parser i a #
Applicative (Parser i) # |
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) # |
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) # |
Methods mzero :: Parser i a # mplus :: Parser i a -> Parser i a -> Parser i a #
Semigroup (Parser i a) # |
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) # |
Methods mempty :: Parser i a # mappend :: Parser i a -> Parser i a -> Parser i a # mconcat :: [Parser i a] -> Parser i a #

data IResult i r #

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) # |
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) # |
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) # |
Methods rnf :: IResult i r -> () #

class Monoid c => Chunk c where #

A common interface for input chunks.

Minimal complete definition

nullChunk, pappendChunk, atBufferEnd, bufferElemAt, chunkElemToChar

Methods

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

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

Instances

Chunk ByteString # |
Associated Types type ChunkElem ByteString :: * # Methods nullChunk :: ByteString -> Bool # pappendChunk :: State ByteString -> ByteString -> State ByteString # atBufferEnd :: ByteString -> State ByteString -> Pos # bufferElemAt :: ByteString -> Pos -> State ByteString -> Maybe (ChunkElem ByteString, Int) # chunkElemToChar :: ByteString -> ChunkElem ByteString -> Char #
Chunk Text # |
Associated Types type ChunkElem Text :: * # Methods nullChunk :: Text -> Bool # pappendChunk :: State Text -> Text -> State Text # atBufferEnd :: Text -> State Text -> Pos # bufferElemAt :: Text -> Pos -> State Text -> Maybe (ChunkElem Text, Int) # chunkElemToChar :: Text -> ChunkElem Text -> Char #