Lucu-0.5: HTTP Daemonic Library



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.



data Parser a Source

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

data ParserResult a Source


Success !a 


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