Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

The University of California Statistics Department; where mean is normal, and deviation standard.


devel / comp.std.c / Re: Adjacent string literals

SubjectAuthor
* Re: Adjacent string literalsTim Rentsch
+* Re: Adjacent string literalsKeith Thompson
|`- Re: Adjacent string literalsTim Rentsch
`* Re: Adjacent string literalsJames Kuyper
 `* Re: Adjacent string literalsTim Rentsch
  `* Re: Adjacent string literalsJames Kuyper
   `- Re: Adjacent string literalsTim Rentsch

1
Re: Adjacent string literals

<86v95i88zw.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=286&group=comp.std.c#286

  copy link   Newsgroups: comp.std.c
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.std.c
Subject: Re: Adjacent string literals
Date: Sat, 10 Jul 2021 08:49:07 -0700
Organization: A noiseless patient Spider
Lines: 31
Message-ID: <86v95i88zw.fsf@linuxsc.com>
References: <rumnae$4mr$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="e13df7ffef68eec8a0b0a92150d2f271";
logging-data="2695"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19cJoRL4JPT+kOWhLJeMNRvQaeKVeNMnvk="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:2isv4NA80KtUI5ctOaYyRmtenbQ=
sha1:iqd0fdsqvs+x+q/hDHdNZzlhx7M=
 by: Tim Rentsch - Sat, 10 Jul 2021 15:49 UTC

James Kuyper <jameskuyper@alumni.caltech.edu> writes:

> I learned a couple of decades ago that adjacent string literals get
> concatenated into a single longer literal, even if separated by
> arbitrarily large amounts of white-space.
>
> Yesterday I happened to notice that translation phase 6 says only that
> "Adjacent string literal tokens are concatenated.", without saying
> anything about white-space. White-space doesn't lose it's significance
> until translation phase 7. Therefore, string literals that are separated
> by white-space do not qualify as adjacent. There's also no mention of
> white-space in the fuller discussion that occurs in 6.4.5p5.
>
> Am I missing something obvious here? I can imagine someone telling me
> that "adjacent" should be understood as "adjacent, ignoring white-space"
> - but that doesn't seem obvious to me. It also sounds vaguely familiar,
> like I've had this discussion with someone before, but I can't locate
> the discussion. Every example of adjacent string literals that appears
> in the standard has at least one white-space character separating them,
> so the intent is crystal-clear, but the wording doesn't clearly say so.
>
> If the phrase "White-space characters separating tokens are no longer
> significant." were moved from the beginning of the description of phase
> 7 to the beginning of the description phase 6, it would make the
> insignificance of white space separating string literals perfectly
> clear, and as far as I can see, would have no other effect

The word "adjacent" doesn't alway mean touching. There is another
word for that, the word "adjoining". Booking a hotel reservation
for adjacent rooms is not the same as a reservation for adjoining
rooms.

Re: Adjacent string literals

<87fswl7rvg.fsf@nosuchdomain.example.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=290&group=comp.std.c#290

  copy link   Newsgroups: comp.std.c
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: Keith.S....@gmail.com (Keith Thompson)
Newsgroups: comp.std.c
Subject: Re: Adjacent string literals
Date: Sat, 10 Jul 2021 14:58:59 -0700
Organization: None to speak of
Lines: 37
Message-ID: <87fswl7rvg.fsf@nosuchdomain.example.com>
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="7dee47812cca3c2bd649333529ffcd37";
logging-data="14108"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19YqcvLyud/rgwEo1jT7PHK"
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Cancel-Lock: sha1:ErOOQYi1kYbZ8Q5NiSnAczofC+E=
sha1:9gFyol66raMyMrYR4vSST+eRKZs=
 by: Keith Thompson - Sat, 10 Jul 2021 21:58 UTC

Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
> James Kuyper <jameskuyper@alumni.caltech.edu> writes:
[...]
>> If the phrase "White-space characters separating tokens are no longer
>> significant." were moved from the beginning of the description of phase
>> 7 to the beginning of the description phase 6, it would make the
>> insignificance of white space separating string literals perfectly
>> clear, and as far as I can see, would have no other effect
>
> The word "adjacent" doesn't alway mean touching. There is another
> word for that, the word "adjoining". Booking a hotel reservation
> for adjacent rooms is not the same as a reservation for adjoining
> rooms.

That's not entirely clear. dictionary.com (not a definitive reference
but a convenient one) shows "adjoining" as one of the definitions of
"adjacent".

If I understand you correctly, if rooms 110 and 112 share a common wall,
perhaps with a door going between them, they're both adjacent and
adjoining, but if instead they're on opposide sides of the elevator
they're adjacent but not adjoining. Is that what you meant? I'm not
sure I'd call them "adjacent" in that case.

A footnote on "Adjacent string literals are concatenated" saying that
two string literals are adjacent if they're adjoining or separated only
by white-space characters would clear this up. Moving "White-space
characters separating tokens are no longer significant." from the
beginning of phase 7 to the beginning of phase 6 would also be a good
solution.

But given the clear examples, I wouldn't object to leaving it as it is.

--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips
void Void(void) { Void(); } /* The recursive call of the void */

Re: Adjacent string literals

<dab9e114-5156-4951-b464-799f231eaafen@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=291&group=comp.std.c#291

  copy link   Newsgroups: comp.std.c
X-Received: by 2002:ad4:596b:: with SMTP id eq11mr47281061qvb.34.1626028909505;
Sun, 11 Jul 2021 11:41:49 -0700 (PDT)
X-Received: by 2002:a9d:4592:: with SMTP id x18mr37325796ote.74.1626028909231;
Sun, 11 Jul 2021 11:41:49 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.std.c
Date: Sun, 11 Jul 2021 11:41:49 -0700 (PDT)
In-Reply-To: <86v95i88zw.fsf@linuxsc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1003:b46e:506b:1ad:a1bb:a32d:dae5;
posting-account=Ix1u_AoAAAAILVQeRkP2ENwli-Uv6vO8
NNTP-Posting-Host: 2600:1003:b46e:506b:1ad:a1bb:a32d:dae5
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <dab9e114-5156-4951-b464-799f231eaafen@googlegroups.com>
Subject: Re: Adjacent string literals
From: jameskuy...@alumni.caltech.edu (James Kuyper)
Injection-Date: Sun, 11 Jul 2021 18:41:49 +0000
Content-Type: text/plain; charset="UTF-8"
 by: James Kuyper - Sun, 11 Jul 2021 18:41 UTC

On Saturday, July 10, 2021 at 11:49:09 AM UTC-4, Tim Rentsch wrote:
> James Kuyper <james...@alumni.caltech.edu> writes:
>
> > I learned a couple of decades ago that adjacent string literals get
> > concatenated into a single longer literal, even if separated by
> > arbitrarily large amounts of white-space.
> >
> > Yesterday I happened to notice that translation phase 6 says only that
> > "Adjacent string literal tokens are concatenated.", without saying
> > anything about white-space. White-space doesn't lose it's significance
> > until translation phase 7. Therefore, string literals that are separated
> > by white-space do not qualify as adjacent. There's also no mention of
> > white-space in the fuller discussion that occurs in 6.4.5p5.
> >
> > Am I missing something obvious here? I can imagine someone telling me
> > that "adjacent" should be understood as "adjacent, ignoring white-space"
> > - but that doesn't seem obvious to me. It also sounds vaguely familiar,
> > like I've had this discussion with someone before, but I can't locate
> > the discussion. Every example of adjacent string literals that appears
> > in the standard has at least one white-space character separating them,
> > so the intent is crystal-clear, but the wording doesn't clearly say so.
> >
> > If the phrase "White-space characters separating tokens are no longer
> > significant." were moved from the beginning of the description of phase
> > 7 to the beginning of the description phase 6, it would make the
> > insignificance of white space separating string literals perfectly
> > clear, and as far as I can see, would have no other effect
> The word "adjacent" doesn't alway mean touching. There is another
> word for that, the word "adjoining". Booking a hotel reservation
> for adjacent rooms is not the same as a reservation for adjoining
> rooms.

But, if it doesn't mean "touching", what does it mean? If a blank space
doesn't prevent them from being adjacent, what does? How do you
draw the line between things that do prevent two string literals from
being adjacent, and things that don't? And - most importantly, where
in the actual text of the standard does it clearly make that distinction?
I contend that it doesn't clearly make that distinction anywhere, but
that moving the sentence "White-space characters separating
tokens are no longer significant." From the beginning of phase 7 to
the beginning of phase 6 would remove all ambiguity, making the text
match the way all real world implementations actually handle this
issue, and would have no other effect. Do you disagree? If so, with
which part of what I just said, and for what reason?

Re: Adjacent string literals

<86im125kaq.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=292&group=comp.std.c#292

  copy link   Newsgroups: comp.std.c
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.std.c
Subject: Re: Adjacent string literals
Date: Thu, 22 Jul 2021 10:29:33 -0700
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <86im125kaq.fsf@linuxsc.com>
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com> <87fswl7rvg.fsf@nosuchdomain.example.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="de9677d480b140bf390ca5541b44761f";
logging-data="1162"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Tdf9TWc+AfSe3wNjteftpHPbGBBLiIt4="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:b9LuqPcpDn9UIYtBoT3eG0VPQFc=
sha1:PnheO/QclwpoTnBYHJMYTbL2OHY=
 by: Tim Rentsch - Thu, 22 Jul 2021 17:29 UTC

Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:

> Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
>
>> James Kuyper <jameskuyper@alumni.caltech.edu> writes:
>
> [...]
>
>>> If the phrase "White-space characters separating tokens are no longer
>>> significant." were moved from the beginning of the description of phase
>>> 7 to the beginning of the description phase 6, it would make the
>>> insignificance of white space separating string literals perfectly
>>> clear, and as far as I can see, would have no other effect
>>
>> The word "adjacent" doesn't alway mean touching. There is another
>> word for that, the word "adjoining". Booking a hotel reservation
>> for adjacent rooms is not the same as a reservation for adjoining
>> rooms.
>
> That's not entirely clear. dictionary.com (not a definitive reference
> but a convenient one) shows "adjoining" as one of the definitions of
> "adjacent".

That's consistent with what I said: "adjoining" being only one
of the definitions is consistent with saying "adjacent" doesn't
_always_ mean touching. Words in English can be ambiguous in
their meanings.

> If I understand you correctly, if rooms 110 and 112 share a common wall,
> perhaps with a door going between them, they're both adjacent and
> adjoining,

In the case of hotels I think "adjoining" always means connected,
either with or perhaps without a door, but yes.

> but if instead they're on opposide sides of the elevator
> they're adjacent but not adjoining. Is that what you meant? I'm not
> sure I'd call them "adjacent" in that case.

A better example is a small utility closet rather than an
elevator. "Adjacent" usually implies "closeness" even if
it doesn't always mean touching, and two rooms with a bank
of four elevators between them would for most people not
be considered adjacent, I think. In the case of hotel
rooms at least it's a matter of degree.

Another example is two rooms having the same latitude and
longitude, but on different (consecutive) floors. I think most
people wouldn't call those rooms "adjacent". However, if there
is a connecting stairway between them, a hotel might very well
offer them as "adjoining rooms".

> A footnote on "Adjacent string literals are concatenated" saying that
> two string literals are adjacent if they're adjoining or separated only
> by white-space characters would clear this up. Moving "White-space
> characters separating tokens are no longer significant." from the
> beginning of phase 7 to the beginning of phase 6 would also be a good
> solution.
>
> But given the clear examples, I wouldn't object to leaving it as it is.

Given that the wording lasted more than 30 years without anyone
even noticing a problem, I think the case for leaving it alone
is decidedly stronger than the case for making a change.

Re: Adjacent string literals

<86eebq56k8.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=293&group=comp.std.c#293

  copy link   Newsgroups: comp.std.c
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.std.c
Subject: Re: Adjacent string literals
Date: Thu, 22 Jul 2021 15:26:15 -0700
Organization: A noiseless patient Spider
Lines: 108
Message-ID: <86eebq56k8.fsf@linuxsc.com>
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com> <dab9e114-5156-4951-b464-799f231eaafen@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="1d9832879025dead7f337c4b8ace10b8";
logging-data="2013"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19wEMawArjuHdtTaDH/2KeNoqvEtP2V338="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:hp9qhaH9k4RetWGV8fF/qnYYYk4=
sha1:1A0y9x3zkMW5RHWNfGozAmqDvd8=
 by: Tim Rentsch - Thu, 22 Jul 2021 22:26 UTC

James Kuyper <jameskuyper@alumni.caltech.edu> writes:

> On Saturday, July 10, 2021 at 11:49:09 AM UTC-4, Tim Rentsch wrote:
>
>> James Kuyper <james...@alumni.caltech.edu> writes:
>>
>>> I learned a couple of decades ago that adjacent string literals get
>>> concatenated into a single longer literal, even if separated by
>>> arbitrarily large amounts of white-space.
>>>
>>> Yesterday I happened to notice that translation phase 6 says only that
>>> "Adjacent string literal tokens are concatenated.", without saying
>>> anything about white-space. White-space doesn't lose it's significance
>>> until translation phase 7. Therefore, string literals that are separated
>>> by white-space do not qualify as adjacent. There's also no mention of
>>> white-space in the fuller discussion that occurs in 6.4.5p5.
>>>
>>> Am I missing something obvious here? I can imagine someone telling me
>>> that "adjacent" should be understood as "adjacent, ignoring white-space"
>>> - but that doesn't seem obvious to me. It also sounds vaguely familiar,
>>> like I've had this discussion with someone before, but I can't locate
>>> the discussion. Every example of adjacent string literals that appears
>>> in the standard has at least one white-space character separating them,
>>> so the intent is crystal-clear, but the wording doesn't clearly say so.
>>>
>>> If the phrase "White-space characters separating tokens are no longer
>>> significant." were moved from the beginning of the description of phase
>>> 7 to the beginning of the description phase 6, it would make the
>>> insignificance of white space separating string literals perfectly
>>> clear, and as far as I can see, would have no other effect
>>
>> The word "adjacent" doesn't alway mean touching. There is another
>> word for that, the word "adjoining". Booking a hotel reservation
>> for adjacent rooms is not the same as a reservation for adjoining
>> rooms.
>
> But, if it doesn't mean "touching", what does it mean?

In hotels, normally it means on the same floor and with no
intervening rooms or other major building structures (but small
things like utility closets don't count). In a country inn where
there are standalone cottages rather than rooms, two cottages
would normally be called adjacent if there were no other cottages
in between, and the cottages in question were not inordinately far
apart.

In the C standard it means having no intervening tokens.

> If a blank space
> doesn't prevent them from being adjacent, what does?

Another token (not a string literal token, presumably, but only
because we might consider a sequence of string literal tokens
to be "adjacent tokens").

> How do you
> draw the line between things that do prevent two string literals from
> being adjacent, and things that don't?

In the text of the C standard, the word "adjacent" is an adjective
modifying the noun "tokens", and hence tokens are what matters.
The line is drawn by normal English usage.

> And - most importantly, where in the actual text of the standard
> does it clearly make that distinction?

That depends in part on one's notion of what it means "to clearly
make" a distinction. Speaking for myself, the combination of
"adjacent" modifying "tokens" and the examples given in 6.4.5 make
the distinction quite clearly enough.

> I contend that it doesn't clearly make that distinction anywhere,

If I may make a suggestion, how you read the C standard doesn't
match the reading mode expected by its authors. The C standard
wasn't written for a target audience of lawyers or mathematicians,
but by practical software developers expecting it would be read by
other practical software developers. The issue suggested here is
way below their radar, and indeed way below the radar of most
people who read the C standard. If no one else has noticed it in
more than 30 years, what does that say about how clear or unclear
the distinction is?

> but
> that moving the sentence "White-space characters separating
> tokens are no longer significant." From the beginning of phase 7 to
> the beginning of phase 6 would remove all ambiguity, making the text
> match the way all real world implementations actually handle this
> issue, and would have no other effect. Do you disagree?

I don't either agree or disagree, because I think the extremely
low probability of anyone being confused makes it not worth the
effort of investigating the question.

> If so, with which part of what I just said, and for what reason?

If there is something I disagree with, I think it's the idea that
attempting to "clarify" the language here will necessarily result
in a net benefit. Consider for example the C++ standard: its
authors apparently strive for exact and precise (and presumably
ambiguity free) phrasing, but the result is an unreadable mess.
To me it seems obvious that the writing in the C standard is much
closer to a good balance point between being formally exact and
being understandable. From my point of view, if writing in the C
standard (or other similar standards) isn't understandable, it's
useless, no matter how precise or exact it is. In this particular
case I would say the current wording is definitely on the right
side of the line.

Re: Adjacent string literals

<a317e953-92af-453b-83b3-447c6331c775n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=294&group=comp.std.c#294

  copy link   Newsgroups: comp.std.c
X-Received: by 2002:ac8:6b0f:: with SMTP id w15mr2071147qts.366.1627000158846; Thu, 22 Jul 2021 17:29:18 -0700 (PDT)
X-Received: by 2002:a05:6808:1494:: with SMTP id e20mr7199116oiw.122.1627000158533; Thu, 22 Jul 2021 17:29:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeder1.feed.usenet.farm!feed.usenet.farm!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.std.c
Date: Thu, 22 Jul 2021 17:29:18 -0700 (PDT)
In-Reply-To: <86eebq56k8.fsf@linuxsc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1003:b127:1584:3f:7618:e6b5:6ce4; posting-account=Ix1u_AoAAAAILVQeRkP2ENwli-Uv6vO8
NNTP-Posting-Host: 2600:1003:b127:1584:3f:7618:e6b5:6ce4
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com> <dab9e114-5156-4951-b464-799f231eaafen@googlegroups.com> <86eebq56k8.fsf@linuxsc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a317e953-92af-453b-83b3-447c6331c775n@googlegroups.com>
Subject: Re: Adjacent string literals
From: jameskuy...@alumni.caltech.edu (James Kuyper)
Injection-Date: Fri, 23 Jul 2021 00:29:18 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 76
 by: James Kuyper - Fri, 23 Jul 2021 00:29 UTC

On Thursday, July 22, 2021 at 6:26:22 PM UTC-4, Tim Rentsch wrote:
> James Kuyper <james...@alumni.caltech.edu> writes:
> > On Saturday, July 10, 2021 at 11:49:09 AM UTC-4, Tim Rentsch wrote:
....
> >> The word "adjacent" doesn't alway mean touching. There is another
> >> word for that, the word "adjoining". Booking a hotel reservation
> >> for adjacent rooms is not the same as a reservation for adjoining
> >> rooms.
> >
> > But, if it doesn't mean "touching", what does it mean?
> In hotels, normally it means on the same floor and with no
> intervening rooms or other major building structures (but small
> things like utility closets don't count). In a country inn where
> there are standalone cottages rather than rooms, two cottages
> would normally be called adjacent if there were no other cottages
> in between, and the cottages in question were not inordinately far
> apart.
>
> In the C standard it means having no intervening tokens.
> > If a blank space
> > doesn't prevent them from being adjacent, what does?
> Another token (not a string literal token, presumably, ...

I think your wording got a little confused there. In "A""B""C", the "B"
string literal token definitely does prevent the "A" and "C" string literal
tokens from being considered adjacent. An implementation would
certainly be non-conforming if it concatenated "A" directly to "C" without
first concatenating one or the other with "B".
The following wording may be intended to address that issue:

> ... but only
> because we might consider a sequence of string literal tokens
> to be "adjacent tokens").

but it's not very clear that it does. The simpler approach is to say that
the one thing that unambiguously DOES prevent two string literal tokens
from being considered adjacent is another string literal token. The only
real question is whether there's anything else that does so.

It would make much more sense for pre-processing tokens to serve as
separators, rather than tokens, since tokens don't exist yet during
translation phase 6 - they don't come into existence until they are
created by conversion from pre-processing tokens during translation
phase 7. String literals are members of both categories. header-names
are removed during translation phase 4, but all of the other differences
between pre-processing tokens and tokens remain valid during phase 6.

However, since white-space characters separating tokens supposedly
remains significant until translation phase 7, the same logic that favors
pre-processing tokens over tokens also favors including white-space
characters as separators. If they are still significant in phase 6, how are
they significant, if not as separators of string literal tokens? I don't claim
that this was the committee's intent (which is irrelevant to my mode of
reading the standard), only that it's an unintentional side effect of putting
the wording about white-space characters in the wrong translation
phase, which should be corrected.

....
> > I contend that it doesn't clearly make that distinction anywhere,
> If I may make a suggestion, how you read the C standard doesn't
> match the reading mode expected by its authors. ...

Your reading mode puts too much emphasis on guessing the intent of
the authors, and not enough on trying to write the text clearly enough to
avoid the need for such guesswork. You might be right that it is the
intended reading mode, but if so, I consider it a seriously flawed one.

....
> ... If no one else has noticed it in
> more than 30 years, what does that say about how clear or unclear
> the distinction is?

You can't be sure that no one else has noticed it, only that no one has
mentioned the issue in any forum that you monitor, during the time that
you have monitored it. Unless you're super-human, you could not have
come close to monitoring all forums where such an issue might have
been raised, for the entire 30 years that you refer to.

Re: Adjacent string literals

<86czkqtrqh.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=441&group=comp.std.c#441

  copy link   Newsgroups: comp.std.c
Path: i2pn2.org!i2pn.org!news.swapon.de!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.std.c
Subject: Re: Adjacent string literals
Date: Mon, 17 Jan 2022 05:29:58 -0800
Organization: A noiseless patient Spider
Lines: 105
Message-ID: <86czkqtrqh.fsf@linuxsc.com>
References: <rumnae$4mr$1@dont-email.me> <86v95i88zw.fsf@linuxsc.com> <dab9e114-5156-4951-b464-799f231eaafen@googlegroups.com> <86eebq56k8.fsf@linuxsc.com> <a317e953-92af-453b-83b3-447c6331c775n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="15598caebf32ebbe97649a2f881af1fe";
logging-data="7626"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ZqwyRci4esXhC+GC+iCgf1V3vw8Xh1RE="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:imuozaZIkzVLZ4myjlzQJvP+2so=
sha1:Tvsxg9TiGNQZraSt5JLZmuAW8IY=
 by: Tim Rentsch - Mon, 17 Jan 2022 13:29 UTC

James Kuyper <jameskuyper@alumni.caltech.edu> writes:

> On Thursday, July 22, 2021 at 6:26:22 PM UTC-4, Tim Rentsch wrote:
>
>> James Kuyper <james...@alumni.caltech.edu> writes:
>>
>>> On Saturday, July 10, 2021 at 11:49:09 AM UTC-4, Tim Rentsch wrote:
>
> ...
>
>>>> The word "adjacent" doesn't alway mean touching. There is
>>>> another word for that, the word "adjoining". Booking a hotel
>>>> reservation for adjacent rooms is not the same as a reservation
>>>> for adjoining rooms.
>>>
>>> But, if it doesn't mean "touching", what does it mean?
>>
>> In hotels, normally it means on the same floor and with no
>> intervening rooms or other major building structures (but small
>> things like utility closets don't count). In a country inn where
>> there are standalone cottages rather than rooms, two cottages
>> would normally be called adjacent if there were no other cottages
>> in between, and the cottages in question were not inordinately
>> far apart.
>>
>> In the C standard it means having no intervening tokens.
>>
>>> If a blank space
>>> doesn't prevent them from being adjacent, what does?
>>
>> Another token (not a string literal token, presumably, ...
>
> I think your wording got a little confused there. In "A""B""C",
> the "B" string literal token definitely does prevent the "A" and
> "C" string literal tokens from being considered adjacent. An
> implementation would certainly be non-conforming if it
> concatenated "A" directly to "C" without first concatenating one
> or the other with "B". The following wording may be intended to
> address that issue:
>
>> ... but only
>> because we might consider a sequence of string literal tokens
>> to be "adjacent tokens").
>
> but it's not very clear that it does. The simpler approach is to
> say that the one thing that unambiguously DOES prevent two string
> literal tokens from being considered adjacent is another string
> literal token. The only real question is whether there's anything
> else that does so.
>
> [...]

Apparently you have missed the point of what I was saying. That
surprises me, because I didn't think it was difficult to
understand.

>>> I contend that it doesn't clearly make that distinction anywhere,
>>
>> If I may make a suggestion, how you read the C standard doesn't
>> match the reading mode expected by its authors. ...
>
> Your reading mode puts too much emphasis on guessing the intent of
> the authors,

It's not surprising that you think so, because that view doesn't
fit with your agenda. However, judging what meaning is intended
isn't what I'm talking about when I say "reading mode".

> and not enough on trying to write the text clearly
> enough to avoid the need for such guesswork.

That's a non-sequitur. The two views are not in opposition;
they are about different kinds of discussion regarding the C
standard. They are not mutually exclusive.

> You might be right that it is the intended reading mode, but if
> so, I consider it a seriously flawed one.

If "it" refers to "judging what meaning is intended", then "it"
is independent of "reading mode" as I am using the term. (Note
also that the word I used is "expected", and not "intended", but
that distinction is not the primary point of focus.)

Let me give an example. The C standard is not a math textbook.
Most people don't read the C standard as though it were a math
textbook. Trying to read the C standard in much the same way as
one reads a math text would be a different "reading mode" than
how most people read it. Does this example help explain what I
mean by "reading mode"?

>> ... If no one else has noticed it in
>> more than 30 years, what does that say about how clear or unclear
>> the distinction is?
>
> You can't be sure that no one else has noticed it, [...]

I never said I was. The question is not what I know but what you
know. If, as far as /you/ know, no one else has noticed the
point you brought up, then it would appear that no one else is
bothered by it. Do you know of any previous instance of someone
else bringing up this question? Or is it, to the best of your
knowledge, the case that your posting here is the first such
occurrence?

1
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor