Russian Qt Forum
Ноябрь 23, 2024, 17:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Построение интерпретаторов, область видимости  (Прочитано 2652 раз)
kdm
Гость
« : Июль 07, 2010, 20:16 »

Никто не знает как правильно вычислять область видимости переменных внутри программы.
Например, дан исходный код:
Код:
integer a = 0;

interger func1 ()
begin
   b = 1;
end;

integer func2 ()
begin
end;

begin
   g = 2;
end.
Как реализовать проверку области видимости?
Если делать это во время интерпретации, увеличивая с каждым блоком текущий уровень на один, то глобальная переменная a не будет видна из функции func1, т.к. уровени будут отличаться. В случае, когда уровни расставляются при семантическом анализе переменная b будет видная из функции func2, которая может следовать за func1, т.к. они будут находится на одном уровне. Можно использовать смешанный метод, но я пока не представляю как.
В красном драконе так сразу не нашел, может кто совет даст, как это делать?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Июль 08, 2010, 00:30 »

мне компиляторы писать не приходилось, но первая мысль такая:
входя в новый уровень иерархии, создавать некий список переменных. При поиске переменных смотреть сначала его, а затем списки выше по иерархии.
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 23.