Copyright | Bryan O'Sullivan 2007-2015 |
---|---|

License | BSD3 |

Maintainer | bos@serpentine.com |

Stability | experimental |

Portability | unknown |

Safe Haskell | Trustworthy |

Language | Haskell98 |

A tiny, highly specialized combinator parser for `ByteString`

strings.

While the main attoparsec module generally performs well, this module is particularly fast for simple non-recursive loops that should not normally result in failed parses.

*Warning*: on more complex inputs involving recursion or failure,
parsers based on this module may be as much as *ten times slower*
than regular attoparsec! You should *only* use this module when you
have benchmarks that prove that its use speeds your code up.

- type Parser a = ZeptoT Identity a
- data ZeptoT m a
- parse :: Parser a -> ByteString -> Either String a
- parseT :: Monad m => ZeptoT m a -> ByteString -> m (Either String a)
- atEnd :: Monad m => ZeptoT m Bool
- string :: Monad m => ByteString -> ZeptoT m ()
- take :: Monad m => Int -> ZeptoT m ByteString
- takeWhile :: Monad m => (Word8 -> Bool) -> ZeptoT m ByteString

# Documentation

A simple parser.

This monad is strict in its state, and the monadic bind operator
(`>>=`

) evaluates each result to weak head normal form before
passing it along.

parseT :: Monad m => ZeptoT m a -> ByteString -> m (Either String a) Source

Run a parser on top of the given base monad.

string :: Monad m => ByteString -> ZeptoT m () Source

Match a string exactly.