hsemail-2: Parsec parsers for the RFC2822 Internet Message format

Copyright(c) 2013 Peter Simons
LicenseBSD3
Maintainersimons@cryp.to
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Text.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 :: Stream s m Char => Char -> ParsecT s u m Char Source #

Case-insensitive variant of Parsec's char function.

caseString :: Stream s m Char => String -> ParsecT s u m () Source #

Case-insensitive variant of Parsec's string function.

manyN :: Int -> ParsecT s u m a -> ParsecT s u m [a] Source #

Match a parser at least n times.

manyNtoM :: Int -> Int -> ParsecT s u m a -> ParsecT s u m [a] 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 :: Stream s m Char => ParsecT s u m Char Source #

Match any character of the alphabet.

bit :: Stream s m Char => ParsecT s u m Char Source #

Match either "1" or "0".

character :: Stream s m Char => ParsecT s u m Char Source #

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

cr :: Stream s m Char => ParsecT s u m Char Source #

Match the carriage return character \r.

lf :: Stream s m Char => ParsecT s u m Char Source #

Match returns the linefeed character \n.

crlf :: Stream s m Char => ParsecT s u m String Source #

Match the Internet newline \r\n.

ctl :: Stream s m Char => ParsecT s u m Char Source #

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

dquote :: Stream s m Char => ParsecT s u m Char Source #

Match the double quote character """.

hexdig :: Stream s m Char => ParsecT s u m Char Source #

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

htab :: Stream s m Char => ParsecT s u m Char Source #

Match the tab ("\t") character.

lwsp :: Stream s m Char => ParsecT s u m String Source #

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

octet :: Stream s m Char => ParsecT s u m Char Source #

Match any character.

sp :: Stream s m Char => ParsecT s u m Char Source #

Match the space.

vchar :: Stream s m Char => ParsecT s u m Char Source #

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

wsp :: Stream s m Char => ParsecT s u m Char Source #

Match either sp or htab.

Useful additions

quoted_pair :: Stream s m Char => ParsecT s u m String Source #

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

quoted_string :: Stream s m Char => ParsecT s u m String Source #

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