Contents   Index   Search   Previous   Next
 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
2  A slice
is not permitted as the prefix of
an Access attribute_reference, even
if the components or the array as a whole are aliased. See 3.10.2.
 
9
3  For a one-dimensional
array A, the slice A(N .. N) denotes
an array that has only one component; its type is the type of A. On the
other hand, A(N) denotes a component of the array A and has the corresponding
component type. 
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 
Contents   Index   Search   Previous   Next   Legal