From: Michael D. Adams Date: Thu, 10 May 2007 15:03:50 +0000 (+0000) Subject: Fixed the C-- lexer to comply with the standard on hex escape sequences. X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=f8ec4ec53ba9377254af4c0c0d3787bbe1e27be3 Fixed the C-- lexer to comply with the standard on hex escape sequences. The C-- standard [1] says in Section 3.3.5 "Character literals" that: - the hex escape sequence "must contain at least one and at most two hexdigits." - the octal escape sequence "must contain at least one and at most three octdigits." [1] Norman Ramsey, Simon Peyton Jones, and Christian Lindig. "The C-- Language Specication, Version 2.0 ( CVS Revision 1.128 )" --- diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index ee05122..cc47796 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -56,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 :-