Data.Attoparsec.Text.Lazy

attoparsec-text-0.8.5.1: Fast combinator parsing for texts

Portability | unknown
Stability | experimental
Maintainer | felipe.lessa@gmail.com

Data.Attoparsec.Text.Lazy

Contents

- Running parsers
  - Result conversion

Description

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

This is essentially the same code as in the `Data.Attoparsec` 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 `L.readFile` or `L.hGetContents`.

Behind the scenes, strict `Text` values are still used internally to store parser input and manipulate it efficiently. High-performance parsers such as `string` still expect strict `Text` parameters.

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

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.