beta
Philippe Pittoli 7 months ago
parent f1f30c8bcd
commit 91337d0f57

@ -19,14 +19,21 @@ import Parsing (Parser, fail, runParser)
import Parsing.String.Basic (alphaNum, letter)
import Parsing.String (char, string, eof)
-- From RFC 1035: <domain> ::= <subdomain> | " "
-- | From RFC 1035: <domain> ::= <subdomain> | " "
-- |
-- | Accepting an optional '.' at the end of the subdomain doesn't conform
-- | to the (prefered) syntax of a domain as described in RFC 1035.
-- | However, this last '.' character should be acceptable in most applications,
-- | specially when an "absolute" name (example.com.) has to be differenciated from a "relative" name (www).
-- |
-- | PS: both "absolute" and "relative" are from filesystem's terminology,
-- | but I assume the reader to be more familiar with file-systems than DNS terminology.
domain :: Parser String String
domain = PC.try (string " ") <|> sub_eof
sub_eof :: Parser String String
sub_eof = do
sub <- subdomain
-- TODO: non standard (RFC 1035).
PC.optional (char '.')
eof
if S.length sub > 255

Loading…
Cancel
Save