Contents Index Search Previous Next
5.6 Block Statements
1
[A block_statement
encloses a handled_sequence_of_statements
optionally preceded by a declarative_part.]
Syntax
2
block_statement
::=
[
block_statement_identifier:]
[
declare
declarative_part]
begin
handled_sequence_of_statements
end [
block_identifier];
3
If a block_statement
has a block_statement_identifier,
then the identifier shall be repeated
after the end; otherwise, there shall not be an identifier
after the end.
Static Semantics
4
A block_statement
that has no explicit declarative_part
has an implicit empty declarative_part.
4.a
Ramification: Thus, other
rules can always refer to the declarative_part
of a block_statement.
Dynamic Semantics
5
{execution (block_statement)
[partial]} The execution of a
block_statement
consists of the elaboration of its
declarative_part
followed by the execution of its
handled_sequence_of_statements.
Examples
6
Example of a
block statement with a local variable:
7
Swap:
declare
Temp : Integer;
begin
Temp := V; V := U; U := Temp;
end Swap;
7.a
Ramification: If task
objects are declared within a block_statement
whose execution is completed, the block_statement
is not left until all its dependent tasks are terminated (see 7.6).
This rule applies to completion caused by a transfer of control.
7.b
Within a block_statement,
the block name can be used in expanded names denoting local entities
such as Swap.Temp in the above example (see 4.1.3).
Wording Changes from Ada 83
7.c
The syntax rule for block_statement
now uses the syntactic category handled_sequence_of_statements.
Contents Index Search Previous Next Legal