Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #112069
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Hexadecimal float constants |
| Date | 2017-06-12 11:26 -0700 |
| Organization | None to speak of |
| Message-ID | <lna85dgj0b.fsf@kst-u.example.com> (permalink) |
| References | <ohmfqn$q4l$1@gioia.aioe.org> <3ebbcdb0-2c89-8e08-43a3-c54fe22fe426@verizon.net> <b71d7769-536a-487d-a141-b7b1214362df@googlegroups.com> |
supercat@casperkitty.com writes:
> On Monday, June 12, 2017 at 11:44:08 AM UTC-5, James R. Kuyper wrote:
>> The C89 Committee felt that it was better to tolerate such
>> anomalies than burden the preprocessor with a more exact, and exacting,
>> lexical specification. It felt that this anomaly was no worse than the
>> principle under which the characters a+++++b are tokenized as a ++ ++ +
>> b (an invalid expression), even though the tokenization a ++ + ++ b
>> would yield a syntactically correct expression. In both cases, exercise
>> of reasonable precaution in coding style avoids surprises."
>
> Inserting token boundaries in a sequence of plus signs so as to handle
> a+++++b with the greediest clustering of plus signs that will parse would
> require that the tokenizer know whether "a" is an array or a number, which
> would not be possible if processing stages are handled sequentially.
How so? I can't think of any other tokenization than a ++ + ++ b that
would yield a syntactically valid expression, regardless of how `a` is
declared/defined. (Of course the standard requires it to be tokenized
as a ++ ++ + b, which is a syntax error, again regardless of how `a` and
`b` are delcared/defined.)
> By contrast, it is unlikely that any non-contrived strictly conforming
> programs would rely upon compilers' inability to recognize a token
> boundary between a hex constant ending in "E" and a trailing plus sign,
> or--for that matter--upon a compiler's regarding 1.23E+5 as three tokens,
> the first of which is "1.23E" and must be followed by a plus sign and an
> integer literal, and allowing the use of ## to join such a "number needing
> exponent" token to a + sign.
1.23E+5 is a perfectly valid floating constant. The example we were
discussing was 0x1234e-1 .
> Fun puzzle: produce a strictly-conforming program which would return 1 on
> an implementation that conforms to the standard, and 0 on an implementation
> that would regard a + or - sign that follows any hex constant as a token
> boundary, even if the last digit of the constant happens to be "e" or "E".
> It is possible, but I would think it unlikely that any such programs have
> ever been written except for compiler testing or other contrived purposes.
I don't know whether there is such a program -- but so what?
Processing strictly conforming programs is not the only requirement
the standard places on an implementation. Implementations are also
required to diagnose violations of syntax rules and constraints,
and 1.23E+5 is a constraint violation (6.4p2).
(Incidentally, a strictly conforming program cannot return 1, only 0,
EXIT_SUCCESS, or EXIT_FAILURE.)
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Hexadecimal float constants Steve Keller <keller@no.invalid> - 2017-06-12 18:34 +0200
Re: Hexadecimal float constants "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-12 12:44 -0400
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-12 10:54 -0700
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-12 11:26 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-12 19:38 +0100
Re: Hexadecimal float constants scott@slp53.sl.home (Scott Lurndal) - 2017-06-12 18:45 +0000
Re: Hexadecimal float constants Robert Wessel <robertwessel2@yahoo.com> - 2017-06-12 13:54 -0500
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-12 20:40 +0100
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-12 13:06 -0700
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-12 13:37 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-12 22:22 +0100
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-12 16:01 -0700
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-12 16:36 -0700
Re: Hexadecimal float constants jameskuyper@verizon.net - 2017-06-12 12:39 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-12 18:42 +0100
Re: Hexadecimal float constants Thomas David Rivers <rivers@dignus.com> - 2017-06-12 17:27 -0400
Re: Hexadecimal float constants "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-12 18:03 -0400
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-12 23:31 +0100
Re: Hexadecimal float constants Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-13 00:10 +0100
Re: Hexadecimal float constants jacobnavia <jacob@jacob.remcomp.fr> - 2017-06-13 01:33 +0200
Re: Hexadecimal float constants Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-13 01:10 +0100
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-12 16:01 -0700
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-12 17:00 -0700
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-13 07:51 -0700
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 09:17 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-13 17:45 +0100
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 11:58 -0700
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-13 12:57 -0700
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 13:01 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-13 22:11 +0100
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 14:22 -0700
Re: Hexadecimal float constants "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-13 17:43 -0400
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 14:48 -0700
Re: Hexadecimal float constants bartc <bc@freeuk.com> - 2017-06-13 23:03 +0100
Re: Hexadecimal float constants GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-14 01:30 +0200
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-13 12:24 -0700
Re: Hexadecimal float constants jacobnavia <jacob@jacob.remcomp.fr> - 2017-06-13 21:52 +0200
Re: Hexadecimal float constants Keith Thompson <kst-u@mib.org> - 2017-06-13 13:12 -0700
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-13 16:18 -0700
Re: Hexadecimal float constants Ike Naar <ike@iceland.freeshell.org> - 2017-06-14 21:28 +0000
Re: Hexadecimal float constants supercat@casperkitty.com - 2017-06-12 15:21 -0700
Re: Hexadecimal float constants Thomas David Rivers <rivers@dignus.com> - 2017-06-13 12:13 -0400
csiph-web