[Bug c/33167] Hex constant characters with \x escape not parsing correctly

2018-01-07 Thread albertmcchan at yahoo dot com
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

2018-01-09 Thread joseph at codesourcery dot com
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

2018-01-09 Thread albertmcchan at yahoo dot com
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

2018-01-09 Thread joseph at codesourcery dot com
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

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- 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

2007-08-24 Thread weston at computer dot org


--- 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

2007-08-24 Thread raeburn at raeburn dot org


--- 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