| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
System.IO.Streams.Attoparsec
Contents
Description
This module provides support for parsing values from InputStreams using
 attoparsec.
- parseFromStream :: Parser r -> InputStream ByteString -> IO r
 - parserToInputStream :: Parser (Maybe r) -> InputStream ByteString -> IO (InputStream r)
 - data ParseException = ParseException String
 
Parsing
parseFromStream :: Parser r -> InputStream ByteString -> IO r Source
Supplies an attoparsec Parser with an InputStream, returning the
 final parsed value or throwing a ParseException if parsing fails.
parseFromStream consumes only as much input as necessary to satisfy the
 Parser: any unconsumed input is pushed back onto the InputStream.
If the Parser exhausts the InputStream, the end-of-stream signal is sent
 to attoparsec.
Example:
ghci> import Data.Attoparsec.ByteString.Char8 ghci> is <-fromList["12345xxx" ::ByteString] ghci>parseFromStream(takeWhileisDigit) is "12345" ghci>readis Just "xxx"
parserToInputStream :: Parser (Maybe r) -> InputStream ByteString -> IO (InputStream r) Source
Given a Parser yielding values of type , transforms an
 Maybe rInputStream over byte strings to an InputStream yielding values of type
 r.
If the parser yields Just x, then x will be passed along downstream, and
 if the parser yields Nothing, that will be interpreted as end-of-stream.
Upon a parse error, parserToInputStream will throw a ParseException.
Example:
ghci> import Control.Applicative ghci> import Data.Attoparsec.ByteString.Char8 ghci> is <-fromList["1 2 3 4 5" ::ByteString] ghci> let parser = (endOfInput>>pureNothing) <|> (Just <$> (skipWhileisSpace*>decimal)) ghci>parserToInputStreamparser is >>=toList[1,2,3,4,5] ghci> is' <-fromList["1 2xx3 4 5" ::ByteString] >>=parserToInputStreamparser ghci>readis' Just 1 ghci>readis' Just 2 ghci>readis' *** Exception: Parse exception: Failed reading: takeWhile1
data ParseException Source
An exception raised when parsing fails.
Constructors
| ParseException String | 
Instances