Справочник по Ada 2012
3.1 Объявления
Язык определяет несколько типов именованных сущностей, которые объявляются с помощью объявлений. Имя сущности определяется объявлением, обычно идентификатором, но иногда и литералом_символа или символом_оператора.
Существует несколько форм объявлений. Основное_объявление — это форма объявления, определённая следующим образом.
Синтаксис
basic_declaration ::=
объявление_типа | объявление_подтипа
| объявление_объекта | объявление_числа
| объявление_подпрограммы | объявление_абстрактной_подпрограммы
| объявление_пустой_процедуры | объявление_функции_выражения
| объявление_пакета | объявление_переименования
| объявление_исключения | объявление_обобщения
| инстанциация_обобщения
объявление_типа | объявление_подтипа
| объявление_объекта | объявление_числа
| объявление_подпрограммы | объявление_абстрактной_подпрограммы
| объявление_пустой_процедуры | объявление_функции_выражения
| объявление_пакета | объявление_переименования
| объявление_исключения | объявление_обобщения
| инстанциация_обобщения
Статическая семантика
Объявление — это конструкция языка, которая связывает имя с (видом) сущностью. Объявление может быть явно указано в тексте программы (явное объявление), или предполагается в определённом месте текста в результате семантики другой конструкции (неявное объявление).
Каждое из следующих является объявлением: любое основное_объявление; спецификация_литерала_перечисления; спецификация_дискриминанта; объявление_компонента; спецификация_параметра_цикла; спецификация_итератора; спецификация_параметра; тело_подпрограммы; объявление_расширенного_объекта_возврата; объявление_входной_точки; спецификация_индекса_входной_точки; спецификация_параметра_выбора; объявление_параметра_обобщения.
Все объявления содержат определение для вида сущности. Вид состоит из идентификации сущности (сущности вида), плюс характеристики, специфичные для вида, которые влияют на использование сущности через этот вид (например, режим доступа к объекту, имена формальных параметров и значения по умолчанию для подпрограммы или видимость компонентов типа). В большинстве случаев объявление также содержит определение самой сущности (объявление переименования — пример объявления, которое не определяет новую сущность, а вместо этого определяет вид существующей сущности (см. 8.5)).
Когда из контекста ясно, термин объект используется вместо вид_объекта. Аналогично, термины тип и подтип используются вместо вид_типа и вид_подтипа соответственно.
Для каждого объявления правила языка определяют определённый участок текста, называемый областью объявления (см. 8.2). Большинство объявлений связывают идентификатор с объявленной сущностью. В пределах своей области, и только там, есть места, где можно использовать идентификатор для ссылки на объявление, вид, который оно определяет, и связанную сущность; эти места определены правилами видимости (см. 8.3). В таких местах идентификатор называется именем сущности (прямое_имя или имя_выбора); имя называется обозначающим объявление, вид и связанную сущность (см. 8.6). Объявление называется объявляющим имя, вид и, в большинстве случаев, саму сущность.
В качестве альтернативы идентификатору литерал перечисления может быть объявлен с помощью литерала_символа в качестве своего имени (см. 3.5.1), а функция может быть объявлена с помощью символа_оператора в качестве своего имени (см. 6.1).
Правила синтаксиса используют термины определяющий_идентификатор, определяющий_литерал_символа и определяющий_символ_оператора для определяющего появления имени; они все вместе называются определяющими именами. Термины прямое_имя и имя_выбора используются для случаев использования идентификаторов, литералов_символов и символов_операторов. Они все вместе называются используемыми именами.
Динамическая семантика
Процесс, посредством которого конструкция достигает своего эффекта во время выполнения, называется выполнением. Этот процесс также называется развёртыванием для объявлений и вычислением для выражений. Один из терминов выполнение, развёртывание или вычисление определяется этим международным стандартом для каждой конструкции, которая имеет эффект во время выполнения.
ПРИМЕЧАНИЯ
1 Во время компиляции объявление сущности объявляет сущность. Во время выполнения развёртывание объявления создаёт сущность.