From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 26 Jul 93 15:12:17 GMT From: agate!howland.reston.ans.net!europa.eng.gtefsd.com!news.ans.net!newsgate. watson.ibm.com!yktnews.watson.ibm.com!ncohen@ucbvax.Berkeley.EDU (Norman H. Co hen) Subject: Re: Forcing default representations Message-ID: List-Id: In article <9307201257.AA00575@eight-ball.boeing.com>, crispen@eight-ball.boeing.com (Bob Crispen) writes: |> Adam Beneschan queries the legality of the following: |> |> > type One_Byte is range 0..7; |> > type Four_Bytes is range 0..31; |> |> > for Landing_Gear_Parameters use |> > record |> > Position at 0 range Four_Bytes; |> > State at 4 range One_Byte; |> > end record; |> |> and another correspondent who hasn't given me permission to quote |> him says that his Alsys Ada compiler won't compile the code above, |> while all 3 of my VADS compilers (of different vintages, and for |> different targets) will. As other correspondents have pointed out, the syntax rules in RM 13.4(2) and 3.5(2) make it clear that this should be rejected, and AI-00498 forbids even 0 range Four_Bytes'Range on the grounds that 'Range is not a static attribute. (This attribute will be static in Ada 9X--see 4.9(25) of Ada 9X RM draft 3.0--but the syntax of a component clause is changed to component_clause_component_name at position range first_bit .. last_bit; where first_bit and last_bit are static simple expressions, so the component clause above will be forbidden in Ada 9Xfor a different reason.) |> What I had in mind of course was analogous to the universal practice: |> |> type Colors is (Mauve, Puce, Ultraviolet); |> for Each_Color in Colors loop |> |> |> "in Colors" being shorthand for "in Colors'first..Colors'last". I |> believe every Ada compiler accepts this, but I can't find the |> LRM entry that says where it has to. Probably right under my nose. The syntax of a loop parameter specification in a for loop (RM 5.5(2)) calls for a "discrete_range", which is different from a "range". A "discrete_range" can be either a "subtype_indication" or a "range" (RM 3.6(2)) and a "subtype_indication" is a type mark (like Colors) optionally followed by a constraint (RM 3.3.2(2)). -- Norman H. Cohen ncohen@watson.ibm.com