Конструирование трансляторов для языков программирования высокого уровня. Ярушкина Н.Г. - 7 стр.

UptoLike

Составители: 

- 8 -
Таблица 1.1
+-----------------------------------+
¦ имя ¦ тип ¦ мнемоническое имя ¦
+-----+--------+--------------------¦
¦ А1 ¦ целое ¦ I1 ¦
¦ ... ... ... ¦
+-----------------------------------+
Такая структура таблицы достаточна для языков программирова-
ния без блочной структуры. Языки программирования с блочной
структурой (Си, Паскаль) имеют автоматическое распределение опе-
ративной памяти под переменные, т.е. переменные, которые объявле-
ны внутри блока (begin, end; {, }), и действуют только внутри
этого блока, а уничтожаются при выходе из блока. Говорят, что
каждая переменная имеет свою область видимости. Глобальная пере-
менная имеет область видимости, совпадающую с текстом программы.
Поэтому, одно и тоже имя переменной можно использовать для обоз-
начения разных переменных:
строка текст программы
1 int x;
2 main()
3 { int y;
.
.
20 { double x;
.
.
}
}
76 f()
77 { float y;
.
.
}
Лексический сканер должен учитывать области видимости и ко-
дировать их по-разному. В этом случае структура таблицы определе-
ний усложняется (Табл.1.2). Вместо имен неименуемых блоков можно
использовать номер строки начала блока или специальное имя.