- 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
slice ::= prefix(discrete_range)
Name Resolution Rules
- The prefix of a slice shall resolve to denote a one-dimensional array
(after any implicit dereference).
- The expected type for the discrete_range of a slice is the index type of
the array type.
- 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.
- The type of the slice is that of the prefix. Its bounds are those
defined by the discrete_range.
- 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.
(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) 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
- Examples of slices:
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
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Page last generated: 95-03-12