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

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