Никто не знает как правильно вычислять область видимости переменных внутри программы.Например, дан исходный код:Код:integer a = 0;interger func1 ()begin b = 1;end;integer func2 ()beginend;begin g = 2;end.Как реализовать проверку области видимости?Если делать это во время интерпретации, увеличивая с каждым блоком текущий уровень на один, то глобальная переменная a не будет видна из функции func1, т.к. уровени будут отличаться. В случае, когда уровни расставляются при семантическом анализе переменная b будет видная из функции func2, которая может следовать за func1, т.к. они будут находится на одном уровне. Можно использовать смешанный метод, но я пока не представляю как.В красном драконе так сразу не нашел, может кто совет даст, как это делать?
|