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

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

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

Синтаксис

sequence_of_statements ::= statement {statement} {label}
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.
Если одна или несколько меток завершают sequence_of_statements, после меток следует неявный null_statement перед любыми последующими конструкциями.

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

Выполнение 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_statements имеет отношение к форме его расширенного имени.

Примеры

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


Spec-Zone.ru

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