48546 (597403), страница 4
Текст из файла (страница 4)
EVP-> TERM
TERM->FACT
FACT->FACT
ID->A|B|C|D
Грамматика четверок
QUAD->OPERAND OPI OPERAND=INT
OP2 OPERAND=INT
OPERAND->INT|ID
INT->DIGIT|DIGIT INT
DIGIT-> 0|1|2|3|4|5|6|7|8|9
OP|+-|*
ID->a|b|c|d|e
Оптимизация
На основании четверок может осуществляться анализ и модернизация промежуточного кода.
Цель: оптимизация.
Можно исключать некоторые операции запоминания и загрузки.
Эффективно использовать промежуточные формы.
Уменьшается длина программы, уменьшается количество переменных. Существует и Машино независимая оптимизация.
Лекция 28.12.07
Распределение памяти. Структурированные переменные.
Компилятор для хранения структурированных элементов должен выполнить несколько этапов:
Выделить память под массив, для этого он должен знать границы массива.
Заполнить информацию характеризующую структурную переменную, размер, тип массива и указатель на его начала.
Сгенерировать информацию для обращения компонентам структурированной переменной.
Породить описатель структурированной переменной, для тех случаев, когда необходимая информация отсутствует во время компиляции.
Аналогичная информация возникает при обработки записи строк и множеств.
Рекурсивный вызов процедур, в случаи использования статического распределения памяти не работает. Эту проблему решают с помощью динамическое распределение памяти. Каждый вызов приводить к образованию области инициализации. Обычна область инициализации располагается в стеки, и располагается следующей информацией. Содержит все переменные, адрес возврата, хранит адрес следующего и предыдущего вызова. Этот метод называется метод автоматического распределения.
Варианты создания компиляторов.
Скорость работы
Качество кода
Диагностика ошибок
Переносимость
Поддержка
Если важна скорость компиляции, то одна просмотровая схема предпочтительней. Однако не все языки высокого уровня.
Если с компилированные объектные модули используются многократно, или памяти другие ресурсы существенно ограниченны или модули обрабатывают большие массивы данных, то скорость выполнения программы становится более важным фактором.
К
Объектная программа
Интерпретатор 1
Интерпретатор 2
Интерпретатор 3
омпиляторы с использованием промежуточного кода. Генераторы, компиляторы.















