Go to the first, previous, next, last section, table of contents.
-
A statement is either simple or compound. A simple_statement encloses no
other statement. A compound_statement can enclose simple_statements and
other compound_statements.
Syntax
-
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
-
The direct_name of a statement_identifier shall be an identifier (not an
operator_symbol).
Name Resolution Rules
-
The direct_name of a statement_identifier shall resolve to denote its
corresponding implicit declaration (see below).
Legality Rules
-
Distinct identifiers shall be used for all statement_identifiers that
appear in the same body, including inner block_statements but excluding
inner program units.
Static Semantics
-
For each statement_identifier, there is an implicit declaration (with
the specified identifier) at the end of the declarative_part of the
innermost block_statement or body that encloses the
statement_identifier. The implicit declarations occur in the same order
as the statement_identifiers occur in the source text. If a usage name
denotes such an implicit declaration, the entity it denotes is the
label, loop_statement, or block_statement with the given
statement_identifier.
Dynamic Semantics
-
The execution of a null_statement has no effect.
-
A transfer of control is the run-time action of an exit_statement,
return_statement, goto_statement, or requeue_statement, selection of a
terminate_alternative, raising of an exception, or an abort, which
causes the next action performed to be one other than what would
normally be expected from the other rules of the language. As explained
in See section 7.6.1 Completion and Finalization, a transfer of control can cause the execution of
constructs to be completed and then left, which may trigger
finalization.
-
The execution of a sequence_of_statements consists of the execution of
the individual statements in succession until the sequence_ is
completed.
NOTES
-
(1) A statement_identifier that appears immediately within the
declarative region of a named loop_statement or an accept_statement is
nevertheless implicitly declared immediately within the declarative
region of the innermost enclosing body or block_statement; in other
words, the expanded name for a named statement is not affected by
whether the statement occurs inside or outside a named loop or an
accept_statement -- only nesting within block_statements is relevant to
the form of its expanded name.
Examples
-
Examples of labeled statements:
-
<<Here>> <<Ici>> <<Aqui>> <<Hier>> null;
-
<<After>> X := 1;
Go to the first, previous, next, last section, table of contents.