-----------------------------------------------------------------------------
{
+{-# OPTIONS -Wwarn #-}
+-- 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 CmmLex (
CmmToken(..), cmmlex,
) where
--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
"&&" { kw CmmT_BoolAnd }
"||" { kw CmmT_BoolOr }
- R@decimal { global_regN VanillaReg }
+ P@decimal { global_regN (\n -> VanillaReg n VGcPtr) }
+ R@decimal { global_regN (\n -> VanillaReg n VNonGcPtr) }
F@decimal { global_regN FloatReg }
D@decimal { global_regN DoubleReg }
L@decimal { global_regN LongReg }
| CmmT_if
| CmmT_jump
| CmmT_foreign
+ | CmmT_never
| CmmT_prim
| CmmT_return
+ | CmmT_returns
| CmmT_import
| CmmT_switch
| CmmT_case
| CmmT_bits64
| CmmT_float32
| CmmT_float64
+ | CmmT_gcptr
| CmmT_GlobalReg GlobalReg
| CmmT_Name FastString
| CmmT_String String
( "if", CmmT_if ),
( "jump", CmmT_jump ),
( "foreign", CmmT_foreign ),
+ ( "never", CmmT_never ),
( "prim", CmmT_prim ),
( "return", CmmT_return ),
+ ( "returns", CmmT_returns ),
( "import", CmmT_import ),
( "switch", CmmT_switch ),
( "case", CmmT_case ),
( "bits32", CmmT_bits32 ),
( "bits64", CmmT_bits64 ),
( "float32", CmmT_float32 ),
- ( "float64", CmmT_float64 )
+ ( "float64", CmmT_float64 ),
+-- New forms
+ ( "b8", CmmT_bits8 ),
+ ( "b16", CmmT_bits16 ),
+ ( "b32", CmmT_bits32 ),
+ ( "b64", CmmT_bits64 ),
+ ( "f32", CmmT_float32 ),
+ ( "f64", CmmT_float64 ),
+ ( "gcptr", CmmT_gcptr )
]
tok_decimal span buf len