comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Pondering what rationale behind record type
Date: Mon, 9 May 2011 11:59:45 -0700 (PDT)
Date: 2011-05-09T11:59:45-07:00	[thread overview]
Message-ID: <90148303-4dc4-4c05-882f-88dd69a95494@z13g2000prk.googlegroups.com> (raw)
In-Reply-To: e49186b6-9c80-4788-a64f-dd9aba151f02@u26g2000vby.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. That is it ends with
> 'end record;' no matter what the identifier is. The rest of others end
> with 'end identifier'. Below are examples regarding this subject.
>
> type Data is record
>    X_Coord : Integer := 0;
>    Y_Coord : Integer := 0;
>     -- more components
> end record;
>
> task type Event_Monitor is
>     entry Start;
>     entry Process (...)
> end Event_Monitor;

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.)

                               -- Adam



  reply	other threads:[~2011-05-09 18:59 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 [this message]
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
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