attoparsec-0.13.0.1: 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 | Trustworthy
Language | Haskell98

Data.Attoparsec.Text.Lazy

Contents

- Running parsers
  - Result conversion

Description

Simple, efficient combinator parsing that can consume lazy `Text` strings, loosely based on the Parsec library.

This is essentially the same code as in the `Text` module, only with a `parse` function that can consume a lazy `Text` incrementally, and a `Result` type that does not allow more input to be fed in. Think of this as suitable for use with a lazily read file, e.g. via `readFile` or `hGetContents`.

Note: The various parser functions and combinators such as `string` still expect strict `Text` parameters, and return strict `Text` results. Behind the scenes, strict `Text` values are still used internally to store parser input and manipulate it efficiently.

Synopsis

- data Result r
  - = Fail Text [String] String
  - | Done Text r
- module Data.Attoparsec.Text
- parse :: Parser a -> Text -> Result a
- parseTest :: Show a => Parser a -> Text -> IO ()
- maybeResult :: Result r -> Maybe r
- eitherResult :: Result r -> Either String r

# Documentation

data Result r

The result of a parse.

Constructors

Fail Text [String] String | The parse failed. The `Text` 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.
Done Text r | The parse succeeded. The `Text` is the input that had not yet been consumed (if any) when the parse succeeded.

Instances

Functor Result |
Show r => Show (Result r) |
NFData r => NFData (Result r) |

module Data.Attoparsec.Text

# Running parsers

parse :: Parser a -> Text -> Result a

Run a parser and return its result.

parseTest :: Show a => Parser a -> Text -> IO ()

Run a parser and print its result to standard output.

## Result conversion

maybeResult :: Result r -> Maybe r

Convert a `Result` value to a `Maybe` value.

eitherResult :: Result r -> Either String r

Convert a `Result` value to an `Either` value.