Accept an underscore as a label prefix in the modern domain parser.

master
Philippe Pittoli 2024-01-19 19:32:03 +01:00
parent d4cbcb8b99
commit e1c6a6f1e9
1 changed files with 2 additions and 1 deletions

View File

@ -26,13 +26,14 @@ import GenericParser.Parser (Parser(..)
label :: Parser DomainError String
label = do
pos <- current_position
maybeu <- tryMaybe $ char '_'
maybel <- tryMaybe letter
case maybel of
Nothing -> Parser \_ -> failureError pos (Just InvalidCharacter)
Just l -> do
s <- tryMaybe ldh_str
lastpos <- current_position
let labelstr = CU.singleton l <> maybe "" CU.fromCharArray s
let labelstr = maybe "" (\_ -> "_") maybeu <> CU.singleton l <> maybe "" CU.fromCharArray s
if (S.length labelstr > max_label_length)
then Parser \_ -> failureError pos (Just <<< LabelTooLarge $ S.length labelstr)
else if (S.length labelstr > 1 && not (parse_last_char labelstr let_dig))