OberonCore
https://forum.oberoncore.ru/

Описание переменных, совпадающих с именем процедуры
https://forum.oberoncore.ru/viewtopic.php?f=29&t=2549
Страница 1 из 1

Автор:  Rifat [ Понедельник, 12 Апрель, 2010 15:56 ]
Заголовок сообщения:  Описание переменных, совпадающих с именем процедуры

Изучая книгу Compiler Construction обратил внимание, на методы работы с процедурами OpenScope и CloseScope в парсере языка Oberon-0. Оттуда следовало, что в процедуре можно описать переменную, совпадающую с именем самой процедуры. Попробовал написать тестовый примерчик, скомпилировалось, более того, можно описывать переменную, совпадающую с именем модуля, внутри модуля.
Код:
MODULE TestMod3;

   VAR TestMod3: INTEGER;
   
   PROCEDURE ProcName*;
   VAR ProcName: PROCEDURE;
   BEGIN
      ProcName;
   END ProcName;

END TestMod3.


Так было задумано в описании языка?
Или это просто особенность реализации конкретного компилятора? (Если это так, то я бы назвал это багом)

Автор:  Александр Шостак [ Понедельник, 12 Апрель, 2010 17:06 ]
Заголовок сообщения:  Re: Описание переменных, совпадающих с именем процедуры

In my humble opinion, это скорее непродуманная реализация. Переопределив идентификатор с именем модуля/процедуры, мы теряем к ним доступ. И если к процедуре ещё можно обратиться ИмяМодуля.ИмяПроцедуры, то к модулю уже нет.

Автор:  Info21 [ Понедельник, 12 Апрель, 2010 18:23 ]
Заголовок сообщения:  Re: Описание переменных, совпадающих с именем процедуры

Это определение языка. Никакой случайности или ошибки тут нет.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/