3 элемент – пробел, соответствует ошибке.
Сравнительный анализ методов
Оба метода детерминированы и могут обнаруживать синтаксические ошибки на самом раннем этапе.2 метод применяется к более широкому классу языков и грамматик и не требует преобразования грамматики. Дд1 требует преобразования, и при наличии хорошего преобразователя не вызывает затруднения.
Экспериментальные данные выполнены с помощью анализатора при сравнении максимального и минимального время разбора предложения пришли к мнению что метод LL быстрее на 50%, то есть метод с верху в низ быстрее на 50%.
После синтаксического анализатора, последним шагом процесса компиляции является генерация кода. Как только распознан фрагмент исходного текста программ соответствующий некоторому правилу грамматики, вызывается семантическая подпрограмма, которая не посредственно генерирует код.
Все реально существующие компиляторы, на этапе разбора входных цепочек, проверяет только синтаксис входного языка не учитывая его семантику. Для проверки необходимо иметь информацию о найденных лексических единицах языка.
Лекция 21.12.07Генерация кода
Промежуточные формы
Последовательность четверок
Последовательность троек
Полиз – позволяет представлять любое математическое выражение без скобок
S->EVP
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
Распределение памяти. Структурированные переменные.
Компилятор для хранения структурированных элементов должен выполнить несколько этапов:
Выделить память под массив, для этого он должен знать границы массива.
Заполнить информацию характеризующую структурную переменную, размер, тип массива и указатель на его начала.
Сгенерировать информацию для обращения компонентам структурированной переменной.
Породить описатель структурированной переменной, для тех случаев, когда необходимая информация отсутствует во время компиляции.
Аналогичная информация возникает при обработки записи строк и множеств.
Рекурсивный вызов процедур, в случаи использования статического распределения памяти не работает. Эту проблему решают с помощью динамическое распределение памяти. Каждый вызов приводить к образованию области инициализации. Обычна область инициализации располагается в стеки, и располагается следующей информацией. Содержит все переменные, адрес возврата, хранит адрес следующего и предыдущего вызова. Этот метод называется метод автоматического распределения.
Варианты создания компиляторов.
Скорость работы
Качество кода
Диагностика ошибок
Переносимость
Поддержка
Если важна скорость компиляции, то одна просмотровая схема предпочтительней. Однако не все языки высокого уровня.
Если с компилированные объектные модули используются многократно, или памяти другие ресурсы существенно ограниченны или модули обрабатывают большие массивы данных, то скорость выполнения программы становится более важным фактором.
|
|
|
|
Генераторы, компиляторы.
... . В случае выбора пункта «выход», необходимо реализовать завершение работы программы и передачу управления операционной системе DOS. 1.3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с ...
... ; РПР - ввод/вывод информации в режиме прерывания; пар. – параллельный порт; посл. – последовательный порт. 2. Разработка структурной схемы микропроцессорной системы. В данной работе разрабатывается микропроцессорная система с минимальной конфигурацией, что предполагает использование управляющих сигналов, формируемых непосредственно на выводах микропроцессора Intel ...
... для каждого звена составим разностные уравнения: 1) первое звено: ; 2) второе звено: ; 3) третье звено: . Результирующее разностное уравнение для цифрового фильтра будет иметь вид: .4 РАЗРАБОТКА АЛГОРИТМА ПРОГРАММЫ ПРОЕКТИРУЕМОГО УСТРОЙСТВА Прежде чем приступить к программированию устройства необходимо основательно изучить его внутреннюю структуру и возможности ресурсов. ...
... микропроцессора, которые явно отражаются в программах и должны быть учтены при разработке схем и программ функционирования системы. Такие характеристики определяются понятием архитектуры микропроцессора. 1.2 Понятие архитектуры микропроцессора Архитектура типичной небольшой вычислительной системы на основе микроЭВМ показана на рис. 1. Такая микроЭВМ содержит все 5 основных блоков цифровой ...
0 комментариев