X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLex.x;h=cc477964fdae5a848945d74f34c96273e5ed924a;hb=f8ec4ec53ba9377254af4c0c0d3787bbe1e27be3;hp=d1a64f67b715eee866af036cf0b6c988b808074d;hpb=b7cadd88aa32661c623f862a3aabc513a0e9f5c3;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index d1a64f6..cc47796 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 } @@ -32,16 +33,16 @@ $whitechar = [\ \t\n\r\f\v\xa0] $white_no_nl = $whitechar # \n $ascdigit = 0-9 -$unidigit = \x01 +$unidigit = \x01 -- Trick Alex into handling Unicode. See alexGetChar. $digit = [$ascdigit $unidigit] $octit = 0-7 $hexit = [$digit A-F a-f] -$unilarge = \x03 +$unilarge = \x03 -- Trick Alex into handling Unicode. See alexGetChar. $asclarge = [A-Z \xc0-\xd6 \xd8-\xde] $large = [$asclarge $unilarge] -$unismall = \x04 +$unismall = \x04 -- Trick Alex into handling Unicode. See alexGetChar. $ascsmall = [a-z \xdf-\xf6 \xf8-\xff] $small = [$ascsmall $unismall \_] @@ -55,7 +56,7 @@ $namechar = [$namebegin $digit] @floating_point = @decimal \. @decimal @exponent? | @decimal @exponent -@escape = \\ ([abfnrt\\\'\"\?] | x @hexadecimal | @octal) +@escape = \\ ([abfnrt\\\'\"\?] | x $hexit{1,2} | $octit{1,3}) @strchar = ($printable # [\"\\]) | @escape cmm :- @@ -276,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 @@ -285,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 -- -----------------------------------------------------------------------------