4.1.4 Attributes
Syntax
range_attribute_designator ::= Range[(
static_expression)]
Name Resolution Rules
Legality Rules
Static Semantics
An
attribute_reference
denotes a value, an object, a subprogram, or some other kind of program
entity.
A
range_attribute_reference
X'Range(N) is equivalent to the
range
X'First(N) .. X'Last(N), except that the
prefix
is only evaluated once. Similarly, X'Range is equivalent to X'First ..
X'Last, except that the
prefix
is only evaluated once.
Dynamic Semantics
Implementation Permissions
An implementation may provide implementation-defined
attributes; the
identifier
for an implementation-defined attribute shall differ from those of the
language-defined attributes unless supplied for compatibility with a
previous edition of this International Standard.
4 Attributes are defined throughout this
International Standard, and are summarized in
Annex
K.
5 In general, the
name
in a
prefix
of an
attribute_reference
(or a
range_attribute_reference)
has to be resolved without using any context. However, in the case of
the Access attribute, the expected type for the
attribute_reference
has to be a single access type, and the resolution of the
name
can use the fact that the type of the object or the profile of the callable
entity denoted by the
prefix
has to match the designated type or be type conformant with the designated
profile of the access type.
Examples
Examples of attributes:
Color'First --
minimum value of the enumeration type Color (see 3.5.1)
Rainbow'Base'First --
same as Color'First (see 3.5.1)
Real'Digits --
precision of the type Real (see 3.5.7)
Board'Last(2) --
upper bound of the second dimension of Board (see 3.6.1)
Board'Range(1) --
index range of the first dimension of Board (see 3.6.1)
Pool(K)'Terminated --
True if task Pool(K) is terminated (see 9.1)
Date'Size --
number of bits for records of type Date (see 3.8)
Message'Address --
address of the record variable Message (see 3.7.1)