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

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
| 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
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;


Spec-Zone.ru

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