X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLex.x;h=fb1179f4905291badffd59acba5c0674b021da1e;hb=d5934bbb856aa0aa620c9b2e0fa51c90a1a5a048;hp=c2efd17710110a278b04cfef59182ed2c28742f4;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index c2efd17..fb1179f 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -1,5 +1,6 @@ ----------------------------------------------------------------------------- --- (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: @@ -24,7 +25,7 @@ import UniqFM import StringBuffer import FastString import Ctype -import Util ( readRational ) +import Util --import TRACE } @@ -137,6 +138,7 @@ data CmmToken | CmmT_if | CmmT_jump | CmmT_foreign + | CmmT_prim | CmmT_import | CmmT_switch | CmmT_case @@ -211,6 +213,7 @@ reservedWordsFM = listToUFM $ ( "if", CmmT_if ), ( "jump", CmmT_jump ), ( "foreign", CmmT_foreign ), + ( "prim", CmmT_prim ), ( "import", CmmT_import ), ( "switch", CmmT_switch ), ( "case", CmmT_case ), @@ -274,7 +277,7 @@ lexToken = do 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 @@ -283,7 +286,7 @@ lexToken = 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 -- -----------------------------------------------------------------------------