From f8ec4ec53ba9377254af4c0c0d3787bbe1e27be3 Mon Sep 17 00:00:00 2001 From: "Michael D. Adams" Date: Thu, 10 May 2007 15:03:50 +0000 Subject: [PATCH] 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 )" --- compiler/cmm/CmmLex.x | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 :- -- 1.7.10.4