allow build settings to be overriden by adding mk/validate.mk
[ghc-hetmet.git] / compiler / cmm / CmmLex.x
index 6ae5200..ec9f585 100644 (file)
@@ -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