[cfe-dev] Problem in locations

Chris Lattner clattner at apple.com
Wed Aug 12 23:29:24 PDT 2009


On Aug 12, 2009, at 11:14 PM, Abramo Bagnara wrote:

>>>
>>> IMHO to have a leading \newline as part of the token confuses the
>>> diagnostic without benefits.
>>> int p() {
>>> for ( \
>>> int i = 0; i < 10; ++i)
>>>   ;
>>> return 0;
>>> }
>>
>> That is perhaps not the best quality of implementation for the
>> diagnostic, but it is intended.  You're hitting issues that are due  
>> to
>> the phases of translation in C.  The first phase removes escaped
>> newlines (which, as a gnu extension, can be followed by horizontal
>> whitespace... urg) and trigraphs.  Because the lexer fully integrates
>> the various phases of translation, a source location for a token  
>> returns
>> the first byte of the file that is part of that token.  In this  
>> case, it
>> is the escaped newline.
>
> Why the escaped newline is not considered the last part of the  
> whitespace?

What do you mean?  Escaped newline can occur anywhere in a token, the  
start of the token isn't special:

foo\
bar??/
baz

is one token.

-Chris



More information about the cfe-dev mailing list