X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLex.x;h=ec9f5855c48e0719469eba6738336aff1cd08225;hb=8a2809c29de9f23eba7ca682b48390033a9d40f6;hp=6ae52007bd6a73e9254ea7668c7b0aca8169e7dd;hpb=5a7a840886f05a1add708708974edae325214ac0;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index 6ae5200..ec9f585 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -29,7 +29,7 @@ import Util --import TRACE } -$whitechar = [\ \t\n\r\f\v\xa0] +$whitechar = [\ \t\n\r\f\v\xa0] -- \xa0 is Unicode no-break space $white_no_nl = $whitechar # \n $ascdigit = 0-9 @@ -139,6 +139,7 @@ data CmmToken | CmmT_jump | CmmT_foreign | CmmT_prim + | CmmT_return | CmmT_import | CmmT_switch | CmmT_case @@ -180,7 +181,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)) @@ -214,6 +215,7 @@ reservedWordsFM = listToUFM $ ( "jump", CmmT_jump ), ( "foreign", CmmT_foreign ), ( "prim", CmmT_prim ), + ( "return", CmmT_return ), ( "import", CmmT_import ), ( "switch", CmmT_switch ), ( "case", CmmT_case ), @@ -227,13 +229,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 +247,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