-----------------------------------------------------------------------------
--- (c) The University of Glasgow, 2004
+--
+-- (c) The University of Glasgow, 2004-2006
--
-- Lexer for concrete Cmm. We try to stay close to the C-- spec, but there
-- are a few minor differences:
import StringBuffer
import FastString
import Ctype
-import Util ( readRational )
+import Util
--import TRACE
}
| CmmT_if
| CmmT_jump
| CmmT_foreign
+ | CmmT_prim
| CmmT_import
| CmmT_switch
| CmmT_case
( "if", CmmT_if ),
( "jump", CmmT_jump ),
( "foreign", CmmT_foreign ),
+ ( "prim", CmmT_prim ),
( "import", CmmT_import ),
( "switch", CmmT_switch ),
( "case", CmmT_case ),
sc <- getLexState
case alexScan inp sc of
AlexEOF -> do let span = mkSrcSpan loc1 loc1
- setLastToken span 0
+ setLastToken span 0 0
return (L span CmmT_EOF)
AlexError (loc2,_) -> do failLocMsgP loc1 loc2 "lexical error"
AlexSkip inp2 _ -> do
AlexToken inp2@(end,buf2) len t -> do
setInput inp2
let span = mkSrcSpan loc1 end
- span `seq` setLastToken span len
+ span `seq` setLastToken span len len
t span buf len
-- -----------------------------------------------------------------------------