Язык программирования Оберон-2

Объявления процедур



10. Объявления процедур

Объявление процедуры состоит из заголовка процедуры и тела процедуры. Заголовок определяет имя процедуры и формальные параметры. Для связанных с типом процедур в объявлении также определяется параметр-приемник. Тело содержит объявления и операторы. Имя процедуры повторяется в конце объявления процедуры.
Имеются два вида процедур: собственно процедуры и процедуры- функции. Последние активизируются обозначением функции как часть выражения и возвращают результат, который является операндом выражения. Собственно процедуры активизируются вызовом процедуры. Процедура является процедурой-функцией, если ее формальные параметры задают тип результата. Тело процедуры-функции должно содержать оператор возврата, который определяет результат.
     Все константы, переменные, типы и процедуры, объявленные внутри тела процедуры, локальны в процедуре. Поскольку процедуры тоже могут быть объявлены как локальные объекты, объявления процедур могут быть вложенными. Вызов процедуры изнутри ее объявления подразумевает рекурсивную активацию.
     Объекты, объявленные в окружении процедуры, также видимы в тех частях процедуры, в которых они не перекрыты локально объявленным объектом с тем же самым именем.

ОбъявлениеПроцедуры       =  ЗаголовокПроцедуры ";" ТелоПроцедуры идент.
ЗаголовокПроцедуры  = PROCEDURE [Приемник] ИдентОпр [ФормальныеПараметры].
ТелоПроцедуры  = ПоследовательностьОбъявлений [BEGIN ПоследовательностьОператоров] END.
ПослОбъявлений  = {CONST {ОбъявлениеКонстант ";"} | TYPE{ОбъявлениеТипов ";"} | VAR {ОбъявлениеПеременных ";"}} {ОбъявлениеПроцедуры ";" | ОпережающееОбъявление";"}.
ОпережающееОбъявление  = PROCEDURE"^" [Приемник] ИдентОпр [ФормальныеПараметры].

Если объявление процедуры содержит параметр-приемник, процедура рассматривается как связанная с типом (см. ). Опережающее объявление служит чтобы разрешить ссылки на процедуру, чье фактическое объявление появляется в тексте позже. Списки формальных параметров опережающего объявления и фактического объявления должны быть идентичны.



Содержание раздела