X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLex.x;h=a1aa2762a97526b38a19b5f7d622543f46f30153;hb=970d5b88b1554bbdd7e459dae41aab3668ae897a;hp=fb1179f4905291badffd59acba5c0674b021da1e;hpb=49c98d143c382a1341e1046f5ca00819a25691ba;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index fb1179f..a1aa276 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -33,20 +33,20 @@ $whitechar = [\ \t\n\r\f\v\xa0] $white_no_nl = $whitechar # \n $ascdigit = 0-9 -$unidigit = \x01 +$unidigit = \x01 -- Trick Alex into handling Unicode. See alexGetChar. $digit = [$ascdigit $unidigit] $octit = 0-7 $hexit = [$digit A-F a-f] -$unilarge = \x03 +$unilarge = \x03 -- Trick Alex into handling Unicode. See alexGetChar. $asclarge = [A-Z \xc0-\xd6 \xd8-\xde] $large = [$asclarge $unilarge] -$unismall = \x04 +$unismall = \x04 -- Trick Alex into handling Unicode. See alexGetChar. $ascsmall = [a-z \xdf-\xf6 \xf8-\xff] $small = [$ascsmall $unismall \_] -$namebegin = [$large $small \_ \. \$ \@] +$namebegin = [$large $small \. \$ \@] $namechar = [$namebegin $digit] @decimal = $digit+ @@ -56,7 +56,7 @@ $namechar = [$namebegin $digit] @floating_point = @decimal \. @decimal @exponent? | @decimal @exponent -@escape = \\ ([abfnrt\\\'\"\?] | x @hexadecimal | @octal) +@escape = \\ ([abfnrt\\\'\"\?] | x $hexit{1,2} | $octit{1,3}) @strchar = ($printable # [\"\\]) | @escape cmm :- @@ -180,7 +180,7 @@ global_regN :: (Int -> GlobalReg) -> Action global_regN con span buf len = return (L span (CmmT_GlobalReg (con (fromIntegral n)))) where buf' = stepOn buf - n = parseInteger buf' (len-1) 10 octDecDigit + n = parseUnsignedInteger buf' (len-1) 10 octDecDigit global_reg :: GlobalReg -> Action global_reg r span buf len = return (L span (CmmT_GlobalReg r)) @@ -227,13 +227,13 @@ reservedWordsFM = listToUFM $ ] tok_decimal span buf len - = return (L span (CmmT_Int $! parseInteger buf len 10 octDecDigit)) + = return (L span (CmmT_Int $! parseUnsignedInteger buf len 10 octDecDigit)) tok_octal span buf len - = return (L span (CmmT_Int $! parseInteger (offsetBytes 1 buf) (len-1) 8 octDecDigit)) + = return (L span (CmmT_Int $! parseUnsignedInteger (offsetBytes 1 buf) (len-1) 8 octDecDigit)) tok_hexadecimal span buf len - = return (L span (CmmT_Int $! parseInteger (offsetBytes 2 buf) (len-2) 16 hexDigit)) + = return (L span (CmmT_Int $! parseUnsignedInteger (offsetBytes 2 buf) (len-2) 16 hexDigit)) tok_float str = CmmT_Float $! readRational str @@ -245,7 +245,7 @@ tok_string str = CmmT_String (read str) setLine :: Int -> Action setLine code span buf len = do - let line = parseInteger buf len 10 octDecDigit + let line = parseUnsignedInteger buf len 10 octDecDigit setSrcLoc (mkSrcLoc (srcSpanFile span) (fromIntegral line - 1) 0) -- subtract one: the line number refers to the *following* line -- trace ("setLine " ++ show line) $ do