module Network.HTTP.Lucu.Parser
( Parser(..)
, ParserResult(..)
+
, parse -- Parser a -> ByteString -> ParserResult a
+
, anyChar -- Parser Char
, satisfy -- (Char -> Bool) -> Parser Char
, char -- Char -> Parser Char
, (<|>) -- Parser a -> Parser a -> Parser a
, oneOf -- [Char] -> Parser Char
, digit -- Parser Char
+ , hexDigit -- Parser Char
, notFollowedBy -- Parser a -> Parser ()
, many -- Parser a -> Parser [a]
, many1 -- Parser a -> Parser [a]
data ParserResult a = Success a
| IllegalInput -- 受理出來ない入力があった
| ReachedEOF -- 限界を越えて讀まうとした
+ deriving (Eq, Show)
-- (>>=) :: Parser a -> (a -> Parser b) -> Parser b
digit :: Parser Char
-digit = oneOf "0123456789"
+digit = do c <- anyChar
+ if c >= '0' && c <= '9' then
+ return c
+ else
+ fail ""
+
+
+hexDigit :: Parser Char
+hexDigit = do c <- anyChar
+ if (c >= '0' && c <= '9') ||
+ (c >= 'a' && c <= 'f') ||
+ (c >= 'A' && c <= 'F') then
+ return c
+ else
+ fail ""
many :: Parser a -> Parser [a]