Commit 6b4ab02f authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Define and use is_decdigit for lexing escapes; fixes trac #2304

parent bd4d75ba
......@@ -11,7 +11,7 @@ module Ctype
, is_digit -- Char# -> Bool
, is_alphanum -- Char# -> Bool
, is_hexdigit, is_octdigit
, is_decdigit, is_hexdigit, is_octdigit
, hexDigit, octDecDigit
) where
......@@ -60,15 +60,19 @@ Utils
\begin{code}
hexDigit :: Char -> Int
hexDigit c | is_digit c = ord c - ord '0'
| otherwise = ord (to_lower c) - ord 'a' + 10
hexDigit c | is_decdigit c = ord c - ord '0'
| otherwise = ord (to_lower c) - ord 'a' + 10
octDecDigit :: Char -> Int
octDecDigit c = ord c - ord '0'
is_decdigit :: Char -> Bool
is_decdigit c
= c >= '0' && c <= '9'
is_hexdigit :: Char -> Bool
is_hexdigit c
= is_digit c
= is_decdigit c
|| (c >= 'a' && c <= 'f')
|| (c >= 'A' && c <= 'F')
......
......@@ -1242,7 +1242,7 @@ lex_escape = do
'x' -> readNum is_hexdigit 16 hexDigit
'o' -> readNum is_octdigit 8 octDecDigit
x | is_digit x -> readNum2 is_digit 10 octDecDigit (octDecDigit x)
x | is_decdigit x -> readNum2 is_decdigit 10 octDecDigit (octDecDigit x)
c1 -> do
i <- getInput
......
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