Справочник по Ada 2005
3.1 Объявления
Язык определяет несколько видов именованных сущностей, которые объявляются объявлениями. Имя сущности определяется объявлением, обычно с помощью идентификатора_определения, но иногда с помощью литерала_символа_определения или символа_оператора_определения.
Существуют различные формы объявлений. basic_declaration — это форма объявления, определённая следующим образом.
Синтаксис
basic_declaration ::=
type_declaration | subtype_declaration
| object_declaration | number_declaration
| subprogram_declaration | abstract_subprogram_declaration
| null_procedure_declaration | package_declaration
| renaming_declaration | exception_declaration
| generic_declaration | generic_instantiation
type_declaration | subtype_declaration
| object_declaration | number_declaration
| subprogram_declaration | abstract_subprogram_declaration
| null_procedure_declaration | package_declaration
| renaming_declaration | exception_declaration
| generic_declaration | generic_instantiation
Статическая семантика
Объявление — это конструкция языка, которая связывает имя с (представлением) сущностью. Объявление может быть явно указано в тексте программы (явное объявление) или должно быть предполагаемо на определённом месте в тексте в силу семантики другой конструкции (неявное объявление).
Каждый из следующих элементов определяется как объявление: любое basic_declaration; enumeration_literal_specification; discriminant_specification; component_declaration; loop_parameter_specification; parameter_specification; subprogram_body; entry_declaration; entry_index_specification; choice_parameter_specification; generic_formal_parameter_declaration. Кроме того, extended_return_statement является объявлением своего defining_identifier.
Все объявления содержат определение для представления сущности. Представление состоит из идентификации сущности (сущности от представления) плюс характеристики, специфичные для представления, которые влияют на использование сущности через это представление (например, режим доступа к объекту, имена формальных параметров и значения по умолчанию для подпрограммы или видимость компонентов типа). В большинстве случаев объявление также содержит определение самой сущности (объявление переименования renaming_declaration — пример объявления, которое не определяет новую сущность, а вместо этого определяет представление существующей сущности (см. 8.5)).
Для каждого объявления правила языка определяют определённую область текста, называемую областью действия объявления (см. 8.2). Большинство объявлений связывают идентификатор с объявленной сущностью. В пределах своей области действия и только там есть места, где можно использовать идентификатор для ссылки на объявление, определяемое им представление и связанную сущность; эти места определяются правилами видимости (см. 8.3). В таких местах идентификатор называется именем сущности (прямым именем или именем селектора); имя называется обозначающим объявление, представление и связанную сущность (см. 8.6). Объявление называется объявляющим имя, представление и, в большинстве случаев, саму сущность.
В качестве альтернативы идентификатору литерал перечисления может быть объявлен с литералом_символа в качестве своего имени (см. 3.5.1), а функция может быть объявлена с символом_оператора в качестве своего имени (см. 6.1).
Правила синтаксиса используют термины defining_identifier, defining_character_literal и defining_operator_symbol для определяющего появления имени; эти термины вместе называются определяющими именами. Термины direct_name и selector_name используются для случаев использования идентификаторов, литералов_символов и символов_операторов. Эти термины вместе называются используемыми именами.
Динамическая семантика
Процесс, с помощью которого конструкция достигает своего временного эффекта, называется выполнением. Этот процесс также называется развёртыванием для объявлений и вычислением для выражений. Один из терминов выполнение, развёртывание или вычисление определён для каждой конструкции, которая имеет временной эффект, в соответствии с этим международным стандартом.
ПРИМЕЧАНИЯ
1 Во время компиляции объявление сущности объявляет сущность. Во время выполнения развёртывание объявления создаёт сущность.