DocAda(tm) is a productivity tool of KSCE

Prev | Up | ____ | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

4.1.4 Attributes

An attribute is a characteristic of an entity that can be queried via an attribute_reference or a range_attribute_reference.

Syntax

   
       attribute_reference ::= prefix'attribute_designator

       attribute_designator ::=
           identifier[(static_expression)]
         | Access | Delta | Digits

       range_attribute_reference ::= prefix'range_attribute_designator

       range_attribute_designator ::= Range[(static_expression)]

Name Resolution Rules

In an attribute_reference, if the attribute_designator is for an attribute defined for (at least some) objects of an access type, then the prefix is never interpreted as an implicit_dereference; otherwise (and for all range_attribute_references), if the type of the name within the prefix is of an access type, the prefix is interpreted as an implicit_dereference. Similarly, if the attribute_designator is for an attribute defined for (at least some) functions, then the prefix is never interpreted as a parameterless function_call; otherwise (and for all range_attribute_references), if the prefix consists of a name that denotes a function, it is interpreted as a parameterless function_call.

The expression, if any, in an attribute_designator or range_attribute_designator is expected to be of any integer type.

Legality Rules

The expression, if any, in an attribute_designator or range_attribute_designator shall be static.

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

The evaluation of an attribute_reference (or range_attribute_reference) consists of the evaluation of the prefix.

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.

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)

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | ____ | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com