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

5.1 Простые и составные операторы — Последовательности операторов

Оператор является либо простым, либо составным. Простой оператор не содержит других операторов. Составной оператор может содержать простые операторы и другие составные операторы.

Синтаксис

sequence_of_statements ::= statement {statement}
statement ::=
{label} simple_statement | {label} compound_statement
simple_statement ::= null_statement
| assignment_statement | exit_statement
| goto_statement | procedure_call_statement
| simple_return_statement | entry_call_statement
| requeue_statement | delay_statement
| abort_statement | raise_statement
| code_statement
compound_statement ::=
if_statement | case_statement
| loop_statement | block_statement
| extended_return_statement
| accept_statement | select_statement
null_statement ::= null;
label ::= <<label_statement_identifier>>
statement_identifier ::= direct_name
Имя direct_name statement_identifier должно обозначать соответствующее неявное объявление (см. ниже).

Правила разрешения имен

Имя direct_name statement_identifier должно разрешаться, обозначая соответствующее неявное объявление (см. ниже).

Правила легальности

Разные идентификаторы должны использоваться для всех statement_identifier, которые появляются в одном теле, включая внутренние block_statement, но исключая внутренние единицы программы.

Статическая семантика

Для каждого statement_identifier существует неявное объявление (с указанным идентификатором) в конце раздела declarative_part самого внутреннего block_statement или тела, которое включает statement_identifier. Неявные объявления происходят в том же порядке, что и statement_identifier в исходном тексте. Если имя использования обозначает такое неявное объявление, то сущность, которую оно обозначает, является меткой, оператором loop_statement или block_statement с заданным statement_identifier.

Динамическая семантика

Выполнение null_statement не имеет эффекта.
Передача управления — это действие во время выполнения оператора exit_statement, оператора возврата, оператора goto_statement или requeue_statement, выбора альтернативы terminate_alternative, возбуждения исключения или прерывания, что приводит к тому, что следующее выполняемое действие будет иным, чем обычно ожидается от других правил языка. Как объясняется в 7.6.1, передача управления может привести к завершению выполнения конструкций и их оставлению, что может вызвать финализацию.
Выполнение sequence_of_statements состоит из последовательного выполнения отдельных операторов statement до тех пор, пока последовательность не будет завершена.
ПРИМЕЧАНИЯ
1 Идентификатор statement_identifier, который появляется непосредственно в области объявления именованного оператора loop_statement или accept_statement, тем не менее, неявно объявляется непосредственно в области объявления самого внутреннего окружающего тела или block_statement; другими словами, расширенное имя именованного оператора не зависит от того, находится ли оператор внутри или снаружи именованного цикла или accept_statement — только вложение в block_statement влияет на форму его расширенного имени.

Примеры

Примеры меченных операторов:
<<Здесь>> <<Здесь>> <<Здесь>> <<Здесь>> null;
<<После>> X := 1;


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API