Генерация внутреннего представления программ

 

На этапе семантического анализа также может решаться задача перевода программы на промежуточный язык. Промежуточная форма записи программы упрощает переход от машинно-независимых этапов трансляции к машинно-зависимым. Она обеспечивает удобство как генерации команд объектной программы, так и интерпретации исходной программы.

Результатом работы синтаксического анализатора должно быть некоторое внутреннее представление исходной цепочки лексем, которое отражает ее синтаксическую структуру. Программа в таком виде в дальнейшем может либо транслироваться в объектный код, либо интерпретироваться.

Основные свойства языка внутреннего представления программ:

1. он позволяет фиксировать синтаксическую структуру исходной программы;

2. текст на нем можно автоматически генерировать во время синтаксического анализа;

3. его конструкции должны относительно просто транслироваться в объектный код либо достаточно эффективно интерпретироваться.

Некоторые общепринятые способы внутреннего представления программ:

1. постфиксная запись

2. префиксная запись

3. многоадресный код с явно именуемыми результатами

4. многоадресный код с неявно именуемыми результатами

5. связные списочные структуры, представляющие синтаксическое дерево.

В основе каждого из этих способов лежит некоторый метод представления синтаксического дерева.

Замечание: чаще всего синтаксическим деревом называют дерево вывода исходной цепочки, в котором удалены вершины, соответствующие цепным правилам вида A → B, где A, B Î N.