[Bug c/33167] Hex constant characters with \x escape not parsing correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167 Albert Chan changed: What|Removed |Added CC||albertmcchan at yahoo dot com --- Comment #4 from Albert Chan --- if gcc hex escapes is right, then gcc octal escape is wrong (it just look at first 3 octals) "\123" = "S" "\0123" = "\n3" ?? "\00123" = "\1" "23" ?? personally, i like this octal escape "bug"
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167 --- Comment #5 from joseph at codesourcery dot com --- The standard syntax production for octal-escape-sequence (C11 6.4.4.4#1) only allows one, two or three digits.
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167 --- Comment #6 from Albert Chan --- if gcc hex escape AND octal is right, does it contradict comment #1 ? "octal or hexadecimal ... longest sequence that constitute escape sequence" I noticed OLD python (2.0) also use the C rule regarding hex escapes, but later switch to a more sensible 2 hex = 1 byte rule (\xX or \xXX)
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167 --- Comment #7 from joseph at codesourcery dot com --- "longest sequence of characters that can constitute the escape sequence" resolves an ambiguity between alternative parses permitted by the syntax; it doesn't need to deal with anything that is not permitted by the syntax. Four or more octal characters in an octal sequence are not a parse permitted by the syntax, whereas more than two hex characters in a hex sequence are a parse permitted by the syntax.
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
--- Comment #1 from pinskia at gcc dot gnu dot org 2007-08-23 21:59 --- No GCC is correct. The standard says: Each octal or hexadecimal escape sequence is the longest sequence of characters that can constitute the escape sequence. So that means the B is going to be taken and be used for the hexadecimal escape sequence. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
--- Comment #2 from weston at computer dot org 2007-08-24 16:04 --- Yep, looks like you are right from the standard. That sucks then. I wish it were the other way because I don't see a way to enter a literal single character in hex followed a by single character [A-Z0-9] without escape sequences. Thanks for the quick response. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167
[Bug c/33167] Hex constant characters with \x escape not parsing correctly
--- Comment #3 from raeburn at raeburn dot org 2007-08-24 19:45 --- (In reply to comment #2) > Yep, looks like you are right from the standard. That sucks then. I wish it > were the other way because I don't see a way to enter a literal single > character in hex followed a by single character [A-Z0-9] without escape > sequences. char *string = "\x01\x02\x03" "Bob"; should work. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33167