Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help


4.1.2 Slices

(1)
A slice denotes a one-dimensional array formed by a sequence of consecutive components of a one-dimensional array. A slice of a variable is a variable; a slice of a constant is a constant; a slice of a value is a value.
Syntax
(2)
       slice ::= prefix(discrete_range)
Name Resolution Rules
(3)
The prefix of a slice shall resolve to denote a one-dimensional array (after any implicit dereference).
(4)
The expected type for the discrete_range of a slice is the index type of the array type.
Static Semantics
(5)
A slice denotes a one-dimensional array formed by the sequence of consecutive components of the array denoted by the prefix, corresponding to the range of values of the index given by the discrete_range.
(6)
The type of the slice is that of the prefix. Its bounds are those defined by the discrete_range.
Dynamic Semantics
(7)
For the evaluation of a slice, the prefix and the discrete_range are evaluated in an arbitrary order. If the slice is not a null slice (a slice where the discrete_range is a null range), then a check is made that the bounds of the discrete_range belong to the index range of the array denoted by the prefix. Constraint_Error is raised if this check fails.

(8)
(9)
Examples
(10)
Examples of slices:
(11)
         Stars(1 .. 15)        --  a slice of 15 characters         (see 3.6.3)
         Page(10 .. 10 + Size) --  a slice of 1 + Size components   (see 3.6)
         Page(L)(A .. B)       --  a slice of the array Page(L)     (see 3.6)
         Stars(1 .. 0)         --  a null slice                     (see 3.6.3)
         My_Schedule(Weekday)  --  bounds given by subtype          (see 3.6.1 and 3.5.1)
         Stars(5 .. 15)(K)     --  same as Stars(K)                 (see 3.6.3)
                               --  provided that K is in 5 .. 15

Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help

Ada WWW Home -- Email comments, additions, corrections, gripes, kudos, etc. to:

Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12