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 )"
<http://www.cminusminus.org/extern/man2.pdf>
@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 :-