comp.lang.ada
 help / color / mirror / Atom feed
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.







  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