Commit 7cce45d8 authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Fix warnings in Ctype

parent 9e8ed752
Character classification Character classification
\begin{code} \begin{code}
{-# OPTIONS -w #-}
-- The above warning supression flag is a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See
-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
-- for details
module Ctype module Ctype
( is_ident -- Char# -> Bool ( is_ident -- Char# -> Bool
, is_symbol -- Char# -> Bool , is_symbol -- Char# -> Bool
...@@ -27,6 +20,7 @@ module Ctype ...@@ -27,6 +20,7 @@ module Ctype
import Data.Int ( Int32 ) import Data.Int ( Int32 )
import Data.Bits ( Bits((.&.)) ) import Data.Bits ( Bits((.&.)) )
import Data.Char ( ord, chr ) import Data.Char ( ord, chr )
import Panic
\end{code} \end{code}
Bit masks Bit masks
...@@ -50,7 +44,8 @@ at the big case below. ...@@ -50,7 +44,8 @@ at the big case below.
is_ctype :: Int -> Char -> Bool is_ctype :: Int -> Char -> Bool
is_ctype mask c = (fromIntegral (charType c) .&. fromIntegral mask) /= (0::Int32) is_ctype mask c = (fromIntegral (charType c) .&. fromIntegral mask) /= (0::Int32)
is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit :: Char -> Bool is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit,
is_alphanum :: Char -> Bool
is_ident = is_ctype cIdent is_ident = is_ctype cIdent
is_symbol = is_ctype cSymbol is_symbol = is_ctype cSymbol
is_any = is_ctype cAny is_any = is_ctype cAny
...@@ -71,14 +66,17 @@ hexDigit c | is_digit c = ord c - ord '0' ...@@ -71,14 +66,17 @@ hexDigit c | is_digit c = ord c - ord '0'
octDecDigit :: Char -> Int octDecDigit :: Char -> Int
octDecDigit c = ord c - ord '0' octDecDigit c = ord c - ord '0'
is_hexdigit :: Char -> Bool
is_hexdigit c is_hexdigit c
= is_digit c = is_digit c
|| (c >= 'a' && c <= 'f') || (c >= 'a' && c <= 'f')
|| (c >= 'A' && c <= 'F') || (c >= 'A' && c <= 'F')
is_octdigit :: Char -> Bool
is_octdigit c = c >= '0' && c <= '7' is_octdigit c = c >= '0' && c <= '7'
to_lower c to_lower :: Char -> Char
to_lower c
| c >= 'A' && c <= 'Z' = chr (ord c - (ord 'A' - ord 'a')) | c >= 'A' && c <= 'Z' = chr (ord c - (ord 'A' - ord 'a'))
| otherwise = c | otherwise = c
\end{code} \end{code}
...@@ -345,4 +343,5 @@ charType c = case c of ...@@ -345,4 +343,5 @@ charType c = case c of
'\253' -> cAny + cIdent + cLower -- ý '\253' -> cAny + cIdent + cLower -- ý
'\254' -> cAny + cIdent + cLower -- þ '\254' -> cAny + cIdent + cLower -- þ
'\255' -> cAny + cIdent + cLower -- ÿ '\255' -> cAny + cIdent + cLower -- ÿ
_ -> panic ("charType: " ++ show c)
\end{code} \end{code}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment