
31 Aug
2009
31 Aug
'09
3:26 p.m.
Am Montag 31 August 2009 19:33:48 schrieb Patrick LeBoutillier:
Hi all,
I'd like to use parsec to parse IP addresses. So far I've written a (tiny) parser for bytes:
byte :: GenParser Char st Word8 byte = do n <- many1 digit return (read n)
The function works fine, but it accepts numbers greater than 255. How do I encapsulate this condition in the parser so that it fails (with en appropriate error message) in this case?
byte :: GenParser Char st Word8 byte = do ds <- many1 digit let n :: Integer -- or Int, if you're not too paranoid n = read ds if n < 256 then return (fromIntegral n) else fail $ "Number " ++ ds ++ " too large for a byte."
Thanks a lot,
Patrick