, text
, separator
, quotedStr
+ , qvalue
)
where
import Data.List
import Network.HTTP.Lucu.Parser
--- |@'isCtl' c@ is True iff @0x20 <= @c@ < 0x7F@.
+-- |@'isCtl' c@ is False iff @0x20 <= @c@ < 0x7F@.
isCtl :: Char -> Bool
isCtl c
| c < '\x1f' = True
quotedPair = do q <- char '\\'
c <- satisfy isChar
return [c]
+
+-- |'qvalue' accepts a so-called qvalue.
+qvalue :: Parser Double
+qvalue = do x <- char '0'
+ xs <- option ""
+ $ do x <- char '.'
+ xs <- many digit -- 本當は三文字までに制限
+ return (x:xs)
+ return $ read (x:xs)
+ <|>
+ do x <- char '1'
+ xs <- option ""
+ $ do x <- char '.'
+ xs <- many (char '0') -- 本當は三文字までに制限
+ return (x:xs)
+ return $ read (x:xs)