Справочник по Ada 2012
5.6 Блочные операторы
Оператор block_statement заключает в себе последовательность обработанных операторов, которая необязательно предваряется разделом описаний.
Синтаксис
block_statement ::=
[block_идентификатор_оператора:]
[declare
раздел_описаний]
begin
последовательность_обработанных_операторов
end [block_идентификатор];
[block_идентификатор_оператора:]
[declare
раздел_описаний]
begin
последовательность_обработанных_операторов
end [block_идентификатор];
Если у оператора block_statement есть block_идентификатор_оператора, то идентификатор должен повторяться после end; в противном случае идентификатор после end отсутствует.
Статическая семантика
Оператор block_statement, у которого отсутствует явный раздел_описаний, имеет неявный пустой раздел_описаний.
Динамическая семантика
Выполнение оператора block_statement состоит из разработки его раздела_описаний, за которым следует выполнение его последовательности_обработанных_операторов.
Примеры
Пример блочного оператора с локальной переменной:
Swap:
declare
Temp : Integer;
begin
Temp := V; V := U; U := Temp;
end Swap;
declare
Temp : Integer;
begin
Temp := V; V := U; U := Temp;
end Swap;