Spec-Zone.ru › Ada 95
Справочное руководство по Ada 95

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