Lucu-0.7.0.1: HTTP Daemonic Library

Network.HTTP.Lucu.Parser

Description

Yet another parser combinator. This is mostly a subset of Text.ParserCombinators.Parsec but there are some differences:

  • This parser works on Data.ByteString.Base.LazyByteString instead of String.
  • Backtracking is the only possible behavior so there is no "try" action.
  • On success, the remaining string is returned as well as the parser result.
  • You can choose whether to treat reaching EOF (trying to eat one more letter at the end of string) a fatal error or to treat it a normal failure. If a fatal error occurs, the entire parsing process immediately fails without trying any backtracks. The default behavior is to treat EOF fatal.

In general, you don't have to use this module directly.

Synopsis

Documentation

data Parser a Source

Parser a is obviously a parser which parses and returns a.

data ParserResult a Source

Constructors

Success !a 
IllegalInput 
ReachedEOF 

Instances

Eq a => Eq (ParserResult a) 
Show a => Show (ParserResult a) 

failP :: Parser aSource

failP is just a synonym for fail undefined.

parse :: Parser a -> ByteString -> (#ParserResult a, ByteString#)Source

parse p bstr parses bstr with p and returns (# result, remaining #).

parseStr :: Parser a -> String -> (#ParserResult a, ByteString#)Source

parseStr p str packs str and parses it.

allowEOF :: Parser a -> Parser aSource

allowEOF p makes p treat reaching EOF a normal failure.

(<|>) :: Parser a -> Parser a -> Parser aSource

This is the backtracking alternation. There is no non-backtracking equivalent.

many :: forall a. Parser a -> Parser [a]Source

count :: Int -> Parser a -> Parser [a]Source

option :: a -> Parser a -> Parser aSource

sepBy :: Parser a -> Parser sep -> Parser [a]Source

sepBy1 :: Parser a -> Parser sep -> Parser [a]Source