Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

4.1.4 Атрибуты

Атрибут — это характеристика сущности, которую можно запросить с помощью attribute_reference или range_attribute_reference.

Синтаксис

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)]

Правила разрешения имен

В attribute_reference, если attribute_designator относится к атрибуту, определённому для (по крайней мере некоторых) объектов типа доступа, то prefix никогда не интерпретируется как implicit_dereference; в противном случае (и для всех range_attribute_reference) , если тип имени в prefix — тип доступа, то prefix интерпретируется как implicit_dereference. Аналогично, если attribute_designator относится к атрибуту, определённому для (по крайней мере некоторых) функций, то prefix никогда не интерпретируется как безаргументный вызов function_call; в противном случае (и для всех range_attribute_reference) , если prefix состоит из имени, обозначающего функцию, он интерпретируется как безаргументный вызов function_call.
Ожидается, что выражение, если оно есть, в attribute_designator или range_attribute_designator, будет любого целочисленного типа.

Правила легальности

Выражение, если оно есть, в attribute_designator или range_attribute_designator должно быть статическим.

Статическая семантика

attribute_reference обозначает значение, объект, подпрограмму или какой-либо другой вид программной сущности.
range_attribute_reference X'Range(N) эквивалентно range X'First(N) .. X'Last(N), за исключением того, что prefix вычисляется только один раз. Аналогично, X'Range эквивалентно X'First .. X'Last, за исключением того, что prefix вычисляется только один раз.

Динамическая семантика

Вычисление attribute_reference (или range_attribute_reference) состоит из вычисления prefix.

Разрешения для реализации

Реализация может предоставить атрибуты, определенные реализацией; идентификатор атрибута, определенного реализацией, должен отличаться от идентификаторов языковых атрибутов, за исключением случаев, когда он предоставлен для совместимости с предыдущими версиями этого международного стандарта.
ПРИМЕЧАНИЯ
4 Атрибуты определены в этом международном стандарте и обобщены в приложении K.
5 В общем случае, имя в prefix attribute_reference (или range_attribute_reference) должно быть разрешено без использования контекста. Однако в случае атрибута Access ожидаемый тип для attribute_reference должен быть единственным типом доступа, а разрешение имени может использовать тот факт, что тип объекта или профиль вызываемого объекта, обозначаемый prefix, должен соответствовать назначенному типу или быть совместимым с назначенным профилем типа доступа.

Примеры

Примеры атрибутов:
Color'First -- минимальное значение перечислимого типа Color (см. 3.5.1)
Rainbow'Base'First -- то же, что и Color'First (см. 3.5.1)
Real'Digits -- точность типа Real (см. 3.5.7)
Board'Last(2) -- верхняя граница второго измерения Board (см. 3.6.1)
Board'Range(1) -- диапазон индексов первого измерения Board (см. 3.6.1)
Pool(K)'Terminated -- True, если задача Pool(K) завершена (см. 9.1)
Date'Size -- количество бит для записей типа Date (см. 3.8)
Message'Address -- адрес переменной записи Message (см. 3.7.1)


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API