From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Pondering what rationale behind record type
Date: Mon, 9 May 2011 15:49:36 -0500
Date: 2011-05-09T15:49:36-05:00 [thread overview]
Message-ID: <iq9k14$riq$1@munin.nbi.dk> (raw)
In-Reply-To: 90148303-4dc4-4c05-882f-88dd69a95494@z13g2000prk.googlegroups.com
"Adam Beneschan" <adam@irvine.com> wrote in message
news:90148303-4dc4-4c05-882f-88dd69a95494@z13g2000prk.googlegroups.com...
On May 9, 10:47 am, Anh Vo <anhvofrc...@gmail.com> wrote:
>> Some time I am wondering why record type has different syntax pattern
>> than the rest with respect to type ending text. ...
>Heh ... good question. I have to say I get tripped up by this a lot;
>I type things like "type Some_Type is record ... end Some_Type;"
>fairly frequently, and sometimes I don't catch it before the compiler
>does.
>
>Maybe the BNF gives a clue. In Ada 83, the "task type" and "end" were
>part of the same syntax definition, so it was clear that the "end"
>ended the "task type" and thus sort of belonged to it; while the
>"record" and "end record" keywords were part of the
>"record_type_definition" syntax rule, which is separate from the rule
>that contains "type identifier [discriminant_part] is
>type_definition;", so maybe they didn't want an "end" in one syntax
>rule to refer to something in another rule. Just a wild guess, but
>perhaps that's the rationale for the original syntax. (Note that this
>doesn't apply in Ada 95+ since the "end" of a task type is now in a
>different syntax rule. I'm just speculating about the original
>rationale.)
I would guess that you have most of the reason. My guess (and I don't know
anything more about this than you do) is that the definition syntax exists
to allow for anonymous types. If you had an anonymous record type, it would
be hard to write the matching identifier. :-)
But most of the anonymous types were stripped out of Ada early on, because
they caused problems with where declarations happened (think about the rules
of 7.3.1 applied to nested, anonymous types - gag!) And they forgot to
change the syntax.
Every once in a while, someone has suggested some sort of fix for this
syntax glitch (I think it affects everyone), but we've never actually
followed through. Probably someone should send a request to Ada-Comment so
it makes it onto an agenda someday.
Randy.
next prev parent reply other threads:[~2011-05-09 20:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-09 17:47 Pondering what rationale behind record type Anh Vo
2011-05-09 18:59 ` Adam Beneschan
2011-05-09 19:51 ` Niklas Holsti
2011-05-09 20:02 ` Dmitry A. Kazakov
2011-05-09 20:12 ` Anh Vo
2011-05-09 22:03 ` Georg Bauhaus
2011-05-10 7:45 ` Dmitry A. Kazakov
2011-05-10 10:12 ` Georg Bauhaus
2011-05-10 12:08 ` Dmitry A. Kazakov
2011-05-10 12:18 ` Georg Bauhaus
2011-05-10 12:50 ` Dmitry A. Kazakov
2011-05-10 14:20 ` Martin
2011-05-11 7:32 ` Dmitry A. Kazakov
2011-05-11 2:28 ` Shark8
2011-05-11 7:32 ` Dmitry A. Kazakov
2011-05-18 22:55 ` Shark8
2011-05-19 8:12 ` Dmitry A. Kazakov
2011-05-09 20:49 ` Randy Brukardt [this message]
2011-05-19 9:50 ` J-P. Rosen
2011-05-20 6:10 ` anon
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox