hsemail-1.7.3: Internet Message Parsers

Portabilityportable
Stabilityprovisional
Maintainersimons@cryp.to
Safe HaskellSafe-Inferred

Text.ParserCombinators.Parsec.Rfc2234

Contents

Description

This module provides parsers for the grammar defined in RFC2234, "Augmented BNF for Syntax Specifications: ABNF", http://www.faqs.org/rfcs/rfc2234.html. The terminal called char in the RFC is called character here to avoid conflicts with Parsec's char function.

Synopsis

Parser Combinators

caseChar :: Char -> CharParser st CharSource

Case-insensitive variant of Parsec's char function.

caseString :: String -> CharParser st ()Source

Case-insensitive variant of Parsec's string function.

manyN :: Int -> GenParser a b c -> GenParser a b [c]Source

Match a parser at least n times.

manyNtoM :: Int -> Int -> GenParser a b c -> GenParser a b [c]Source

Match a parser at least n times, but no more than m times.

parsec2read :: Parser a -> String -> [(a, String)]Source

Helper function to generate Parser-based instances for the Read class.

Primitive Parsers

alpha :: CharParser st CharSource

Match any character of the alphabet.

bit :: CharParser st CharSource

Match either "1" or "0".

character :: CharParser st CharSource

Match any 7-bit US-ASCII character except for NUL (ASCII value 0, that is).

cr :: CharParser st CharSource

Match the carriage return character \r.

lf :: CharParser st CharSource

Match returns the linefeed character \n.

crlf :: CharParser st StringSource

Match the Internet newline \r\n.

ctl :: CharParser st CharSource

Match any US-ASCII control character. That is any character with a decimal value in the range of [0..31,127].

dquote :: CharParser st CharSource

Match the double quote character """.

hexdig :: CharParser st CharSource

Match any character that is valid in a hexadecimal number; ['0'..'9'] and ['A'..'F','a'..'f'] that is.

htab :: CharParser st CharSource

Match the tab ("\t") character.

lwsp :: CharParser st StringSource

Match "linear white-space". That is any number of consecutive wsp, optionally followed by a crlf and (at least) one more wsp.

octet :: CharParser st CharSource

Match any character.

sp :: CharParser st CharSource

Match the space.

vchar :: CharParser st CharSource

Match any printable ASCII character. (The "v" stands for "visible".) That is any character in the decimal range of [33..126].

wsp :: CharParser st CharSource

Match either sp or htab.

Useful additions

quoted_pair :: CharParser st StringSource

Match a "quoted pair". Any characters (excluding CR and LF) may be quoted.

quoted_string :: CharParser st StringSource

Match a quoted string. The specials "\" and """ must be escaped inside a quoted string; CR and LF are not allowed at all.