comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: unsigned type
Date: Thu, 02 Jul 2009 19:04:36 GMT
Date: 2009-07-02T19:04:36+00:00	[thread overview]
Message-ID: <8x73m.415010$4m1.171425@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: 273dedb7-8d68-42d2-8602-aa44c79f3708@b9g2000yqm.googlegroups.com

Adam. 
 
RM 3.6.1 ( 17..18 ) proves your point about strings with subscripts of ( 1..0 ). 
But it kinds of flys in the face of RM 0 ( 29 ) [ see below ]. Since we must use the keyword "reverse" to transverse a loop index 
in deceasing order, it would seam logical that ( 1 .. 0 ) or S ( S'First .. ( S'First - 1 ) ) 
should be illegal for Strings because the 0 is not within the range of the 
predefined type Positive. But a String with length greater than 1 the we could 
use: S ( ( S'First + 1 ) .. S'First ) => S ( 2 ..1 ) would be legal because 
both index values are legal subscripts and these values could be all the 
way to S ( S'Last .. S'First ) to get a null array (String).
 
 
Note : Around line 291 of RM 95 Text version

RM  0. (29) 
29   Execution of a program unit may encounter error situations in which
normal program execution cannot continue.  For example, an arithmetic
computation may exceed the maximum allowed value of a number, or an attempt
                                                              ^^^^^^^^^^^^^
may be made to access an array component by using an incorrect index value.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To deal with such error situations, the statements of a program unit can be
textually followed by exception handlers that specify the actions to be taken
when the error situation arises.  Exceptions can be raised explicitly by a
raise statement.
  




In <273dedb7-8d68-42d2-8602-aa44c79f3708@b9g2000yqm.googlegroups.com>, Adam Beneschan <adam@irvine.com> writes:
>On Jun 30, 4:48=A0pm, a...@anon.org (anon) wrote:
>> Read RM 3.5 =A0( 4 )
>>
>> Is "A ( 0 .. 0 )" an example of null range. =A0By the definition in RM 3.=
>5
>> ( 4 ), the Right side range (index) must be less than the Left side, so
>> "A ( 0.. 0 )" is not a valid null range statement. So, this statement
>> should generate a compiler or runtime error, because either range is not
>> a subset of the range for Strings.
>
>OK, I think I've finally figured out why we're having this confusing
>argument.  It goes way back to this post of yours:
>
>>> For Strings:
>>>                          --  'A' is a zero length string, A'Last =3D 0, =
>and
>>>                          --  put_line  ( A ( A'First .. A'Last ) ) ;
>>>                          --  does not raise an Constraint_Error even tho=
>ugh in
>>>                          --  this case it translate to:
>>>                          --  put_line  ( A ( 0 .. 0 ) ) ;
>>>  A : String :=3D ""        ;
>
>It does not translate to A (0..0); it translates to A (1..0).  If A is
>declared as in your example above, A'First will be 1 and A'Last will
>be 0.  Try it (try declaring A like that and outputting A'First and
>A'Last).  It looks like everyone else missed this original error of
>yours, which has apparently led to some confusion.
>
>In this case, A'First..A'Last, which is 1..0, is compatible with the
>subtype because it's a null range, and null ranges are compatible with
>the subtype even when the range bounds don't actually belong to the
>subtype.  0..0 is not compatible with the subtype, but you cannot
>declare a string with that index range unless you try to do it
>explicitly:
>
>   A : String (0..0);
>
>and then you *will* get a Constraint_Error.
>
>So your later assertion that follows:
>
>>> Since you can have zero length string , the index is Natual instead of P=
>ositive,
>>> because zero is in Natural but is not define in Positive. Even though th=
>e
>>> Standard package define String index as a Positive type. (GNAT)
>
>is wrong.  The index range is Positive, but null ranges don't have to
>meet that constraint.  They don't have to be Natural, either.  This is
>legal and will not raise an exception at runtime:
>
>   B : String (-9 .. -10) :=3D "";
>
>Hope this clears everything up.
>
>                                  -- Adam
>




  reply	other threads:[~2009-07-02 19:04 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-28 15:36 unsigned type Rob Solomon
2009-06-28 15:45 ` Florian Weimer
2009-06-28 15:48 ` Albrecht Käfer
2009-06-28 17:56 ` anon
2009-06-28 19:17   ` Ludovic Brenta
2009-06-28 23:08     ` anon
2009-06-29  0:19       ` tmoran
2009-06-29  8:00         ` anon
2009-06-29  9:56           ` Jean-Pierre Rosen
2009-06-29 10:21             ` Ludovic Brenta
2009-06-29 11:23               ` sjw
2009-06-29 12:07                 ` Jean-Pierre Rosen
2009-06-29 20:06                 ` anon
2009-06-29 19:31               ` anon
2009-06-29 21:49                 ` Georg Bauhaus
     [not found]                 ` <zuKdneNYxfFNLNTXnZ2dnUVZ_t2dnZ2d@earthlink.com>
2009-06-30 11:29                   ` anon
2009-06-30 12:19                     ` Ludovic Brenta
2009-06-29 20:19             ` anon
2009-06-29 20:41               ` Ludovic Brenta
2009-06-29 22:15               ` Georg Bauhaus
2009-06-29 23:08               ` Adam Beneschan
2009-06-29 23:11               ` Adam Beneschan
2009-06-30 12:39               ` Martin
2009-06-29 10:25           ` Georg Bauhaus
2009-06-29 20:02             ` anon
2009-06-29 22:08               ` Georg Bauhaus
2009-06-30 23:01                 ` Randy Brukardt
2009-06-30 13:46               ` Jean-Pierre Rosen
2009-06-30 15:22                 ` Adam Beneschan
2009-06-30 15:59                   ` Albrecht Käfer
2009-06-30 16:59                     ` Adam Beneschan
2009-06-30 17:44                       ` Albrecht Käfer
2009-06-30 18:13                         ` Robert A Duff
2009-06-30 18:16                           ` Albrecht Käfer
2009-06-30 23:48                       ` anon
2009-07-01  1:39                         ` Adam Beneschan
2009-07-02 19:04                           ` anon [this message]
2009-07-02 19:49                           ` anon
2009-07-02 21:37                             ` Adam Beneschan
2009-07-03  1:42                             ` anon
2009-07-03  2:10                               ` Adam Beneschan
2009-07-03  7:07                             ` Jean-Pierre Rosen
2009-07-03 20:53                               ` anon
2009-07-03 21:24                                 ` Georg Bauhaus
2009-07-04  9:09                                   ` anon
2009-07-04 13:43                                     ` Georg Bauhaus
2009-07-06  9:04                                     ` AdaMagica
2009-07-03 21:46                                 ` Adam Beneschan
2009-07-04 12:39                                   ` Martin
2009-07-01  8:09                   ` Jean-Pierre Rosen
2009-07-01 15:08                     ` Albrecht Käfer
2009-07-11 14:40           ` Hibou57 (Yannick Duchêne)
2009-07-11 17:18             ` sjw
2009-07-11 18:15               ` Hibou57 (Yannick Duchêne)
2009-07-11 20:20             ` anon
2009-07-12 17:57               ` Samuel Tardieu
2009-07-12 18:24                 ` AdaMagica
2009-07-13 22:03                 ` anon
2009-07-14  7:58                   ` Martin
2009-07-16 13:54                     ` anon
2009-07-16 14:41                       ` Martin
2009-07-16 15:12                         ` Adam Beneschan
2009-07-11 14:43           ` Hibou57 (Yannick Duchêne)
2009-07-11 15:22             ` Albrecht Käfer
2009-06-29  8:42       ` Martin
2009-06-29  8:54         ` Dmitry A. Kazakov
2009-06-29 10:10           ` Martin
2009-06-29 12:34             ` Dmitry A. Kazakov
2009-06-29 19:26             ` anon
2009-06-29 23:02               ` Martin
2009-06-29 19:47           ` anon
2009-06-30  8:31             ` Ludovic Brenta
2009-06-28 19:54   ` tmoran
2009-06-28 22:34     ` Gary Scott
2009-06-28 23:15       ` John B. Matthews
2009-06-28 23:21       ` anon
2009-06-29  7:18       ` Dmitry A. Kazakov
2009-06-29  9:52         ` Georg Bauhaus
2009-06-29 12:43           ` Dmitry A. Kazakov
2009-06-29 13:36     ` Rob Solomon
2009-06-29 14:03       ` Robert A Duff
2009-06-29 14:13       ` Georg Bauhaus
2009-06-29 14:18       ` Ludovic Brenta
2009-06-29 15:40         ` Robert A Duff
2009-07-03  1:41         ` Rob Solomon
2009-07-03  7:12           ` Learning Ada (Was: unsigned type) Jacob Sparre Andersen
2009-07-03  8:38             ` Learning Ada Peter Hermann
2009-07-03  9:44               ` Georg Bauhaus
2009-07-03 22:20             ` Learning Ada (Was: unsigned type) anon
2009-07-04 14:53               ` Georg Bauhaus
2009-07-05 23:21                 ` anon
2009-07-06  0:05                   ` Ludovic Brenta
2009-07-06  0:19                   ` Learning Ada Albrecht Käfer
2009-07-06  2:50                     ` anon
2009-07-06  6:18                       ` AdaMagica
2009-07-06  7:47                         ` Jean-Pierre Rosen
2009-07-06 20:21                         ` anon
2009-07-06 21:08                           ` Georg Bauhaus
2009-07-06 22:43                           ` Frank J. Lhota
2009-07-09 22:28                             ` anon
2009-07-10  6:23                               ` AdaMagica
2009-07-06 10:53                   ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-06 19:34                     ` anon
2009-07-06 20:29                       ` Learning Ada Albrecht Käfer
2009-07-06 21:04                       ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-07 19:25                       ` sjw
2009-07-06 23:15                   ` Randy Brukardt
2009-07-07 15:29                     ` Adam Beneschan
2009-07-09  0:15                       ` Randy Brukardt
2009-07-09 15:26                         ` Adam Beneschan
2009-06-29 15:37       ` unsigned type Adam Beneschan
2009-07-06 20:20       ` Dave
2009-06-29 16:51 ` Martin Krischik
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox