Руководство по Ada (Ada 2022)
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;