Справочник Ada 95
3.11 Объявляемые части
Часть declarative_part содержит элементы declarative_item (возможно, ни одного).
Синтаксис
declarative_part ::= {declarative_item}
declarative_item ::=
basic_declarative_item | body
basic_declarative_item | body
basic_declarative_item ::=
basic_declaration | aspect_clause | use_clause
basic_declaration | aspect_clause | use_clause
body ::= proper_body | body_stub
proper_body ::=
subprogram_body | package_body | task_body | protected_body
subprogram_body | package_body | task_body | protected_body
Динамические семантика
Выполнение части declarative_part состоит из выполнения элементов declarative_item, если таковые имеются, в порядке их следования в части declarative_part.
Выполняемый элемент находится в выполненном состоянии после нормального завершения его выполнения. До этого он находится в невыполненном состоянии.
Для конструкции, пытающейся использовать тело, выполняется проверка (Elaboration_Check) следующим образом:
- Для вызова (незащищенной) подпрограммы, имеющей явное тело, проверяется, что тело уже выполнено. Эта проверка и вычисления фактических параметров вызова выполняются в произвольном порядке.
- Для вызова защищенной операции защищенного типа (имеющего тело — проверка не выполняется, если для защищенного типа применим pragma Import), проверяется, что protected_body уже выполнено. Эта проверка и вычисления фактических параметров вызова выполняются в произвольном порядке.
- Для активации задачи, активатор проверяет, что task_body уже выполнено. Если две или более задач активируются вместе (см. 9.2), в результате выполнения declarative_part или инициализации для объекта, созданного аллокатором, эта проверка выполняется для всех задач перед активацией любой из них.
- Для экземпляризации обобщённого блока, имеющего тело, проверяется, что это тело уже выполнено. Эта проверка и вычисление любых explicit_generic_actual_parameter экземпляризации выполняются в произвольном порядке.
Исключение Program_Error возникает, если любая из этих проверок завершается неудачно.