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

4.1 Имена

Имя может обозначать объявленные сущности, объявленные явно или неявно (см. 3.1). Имя также может обозначать объекты или подпрограммы, указанные значениями доступа; результаты преобразования_типа или вызова_функции; подкомпоненты и срезы объектов и значений; защищённые подпрограммы, отдельные записи, семейства записей и записи в семействах записей. Наконец, имя может обозначать атрибуты любого из вышеперечисленного.

Синтаксис

имя ::=
прямое_имя | явное_разъяснение
| индексированный_компонент | срез
| выбранный_компонент | ссылка_на_атрибут
| преобразование_типа | вызов_функции
| литерал_символа
прямое_имя ::= идентификатор | символ_оператора
префикс ::= имя | неявное_разъяснение
явное_разъяснение ::= имя.all
неявное_разъяснение ::= имя
Определенные формы имени (индексированные_компоненты, выбранные_компоненты, срезы и ссылки_на_атрибуты) включают в себя префикс, который сам по себе является именем, обозначающим некоторую связанную сущность, или неявным_разъяснением значения доступа, указывающего на некоторую связанную сущность.

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

Имя в разъяснении (как неявное_разъяснение, так и явное_разъяснение) ожидается любого типа доступа.

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

Если тип имени в разъяснении — это тип доступа к объекту T, то разъяснение обозначает представление объекта, а номинальный подтип представления — это указанный подтип T.
Если тип имени в разъяснении — это тип доступа к подпрограмме S, то разъяснение обозначает представление подпрограммы, а профиль представления — это указанный профиль S.

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

Оценка имени определяет сущность, обозначаемую именем. Эта оценка не оказывает никакого другого влияния для имени, являющегося прямым_именем или литералом_символа.
Оценка имени, имеющего префикс, включает в себя оценку префикса. Оценка префикса состоит из оценки имени или неявного_разъяснения. Префикс обозначает сущность, обозначаемую именем или неявным_разъяснением.
Оценка разъяснения состоит из оценки имени и определения объекта или подпрограммы, указанного значением имени. Проводится проверка, что значение имени не является нулевым значением доступа. Если эта проверка завершается неудачно, генерируется исключение Constraint_Error. Разъяснение обозначает объект или подпрограмму, указанные значением имени.

Примеры

Примеры прямых имён:
Pi -- прямое имя числа (см. 3.3.2)
Limit -- прямое имя константы (см. 3.3.1)
Count -- прямое имя скалярной переменной (см. 3.3.1)
Board -- прямое имя массива переменной (см. 3.6.1)
Matrix -- прямое имя типа (см. 3.6)
Random -- прямое имя функции (см. 6.1)
Error -- прямое имя исключения (см. 11.1)
Примеры разъяснений:
Next_Car.all -- явное разъяснение, обозначающее объект, указанный переменной
-- доступа Next_Car (см. 3.10.1)
Next_Car.Owner -- выбранный компонент с неявным разъяснением;
-- то же, что Next_Car.all.Owner


Spec-Zone.ru

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