Справочник Ada 95
5.1 Простые и составные операторы - Последовательности операторов
Оператор является либо простым, либо составным. Простой оператор не содержит других операторов. Составной оператор может содержать простые операторы и другие составные операторы.
Синтаксис
sequence_of_statements ::= statement {statement}
statement ::=
{label} simple_statement | {label} compound_statement
{label} simple_statement | {label} compound_statement
simple_statement ::= null_statement
| assignment_statement | exit_statement
| goto_statement | procedure_call_statement
| return_statement | entry_call_statement
| requeue_statement | delay_statement
| abort_statement | raise_statement
| code_statement
| assignment_statement | exit_statement
| goto_statement | procedure_call_statement
| 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
| accept_statement | select_statement
if_statement | case_statement
| loop_statement | block_statement
| accept_statement | select_statement
null_statement ::= null;
label ::= <<label_statement_identifier>>
statement_identifier ::= direct_name
Прямое имя statement_identifier должно быть идентификатором (а не операторным символом).
Правила разрешения имен
Прямое имя statement_identifier должно разрешаться для обозначения соответствующего неявного объявления (см. ниже).
Правила легальности
Разные идентификаторы должны использоваться для всех statement_identifierов, которые появляются в одном теле, включая внутренние block_statementы, но исключая внутренние программные модули.
Статическая семантика
Для каждого statement_identifier существует неявное объявление (с указанным identifier) в конце declarative_part самого внутреннего block_statement или тела, которое включает statement_identifier. Неявные объявления происходят в том же порядке, что и statement_identifierы в исходном тексте. Если имя использования обозначает такое неявное объявление, то сущность, которую оно обозначает, - это label, loop_statement или block_statement с данным statement_identifier.
Динамическая семантика
Выполнение null_statement не имеет эффекта.
Передача управления - это действие во время выполнения exit_statement, return_statement, goto_statement или requeue_statement, выбор terminate_alternative, повышение исключения или прерывание, которое заставляет следующее выполняемое действие отличаться от того, что обычно ожидается по другим правилам языка. Как объясняется в 7.6.1, передача управления может привести к завершению выполнения конструкций и затем к выходу, что может инициировать окончание.
Выполнение sequence_of_statements состоит из последовательного выполнения отдельных statementов до тех пор, пока sequence_ не будет завершена.
ПРИМЕЧАНИЯ
1 statement_identifier, который появляется непосредственно в области объявления именованного loop_statement или accept_statement, тем не менее, неявно объявляется непосредственно в области объявления самого внутреннего окружающего тела или block_statement; другими словами, расширенное имя именованного оператора не зависит от того, находится ли оператор внутри или вне именованного цикла или accept_statement - только вложенность внутри block_statementов имеет отношение к форме его расширенного имени.
Примеры
Примеры именованных операторов:
<<Здесь>> <<Здесь>> <<Здесь>> <<Здесь>> null;
<<После>> X := 1;