Распознаватели – распознает поток информации.
Нисходящие распознаватели – сверху вниз по дереву разбора.
Восходящие распознаватели – снизу вверх по дереву разбора.
Нисходящие распознаватели более логичны.
Распознавание происходит слева направо.
Распознавание е с возвратом – идем по тексту программы, встречаем переменную, и возвращаемся в заголовок, чтобы определить переменную.
Распознавание без возврата – к заголовку программы создается таблица переменных. В процессе прохода по программе , когда встречается переменная, мы обращаемся к таблице.
Метод рекурсивного спуска — это один из методов определения принадлежности входной строки к некоторому формальному языку, описанному контекстно-свободной грамматикой. Это класс алгоритмов грамматического анализа, где правила формальной грамматики раскрываются, начиная со стартового символа, до получения требуемой последовательности лексем.
5. Многопрограммность- количество проходов по входному тексту. 1)Иду повходной строке, на выходе сразу же формирую выходную строку.2) Иду по входной строке – формирую лексемы, выбрасывая комментарии, или для начала выброшу комментарии, затем сформирую лексемы.
IV. Четвертый кусок
Генератор кода. Назначение. Способы реализации. Вход и выход. Анализирующая и генерирующая части.
Назначение. Преобразованию кода из промежуточного представление в машинные инструкции — генератор кода обычно пытается оптимизировать создаваемый код теми или иными способами. Например, он может использовать более быстрые инструкции, использовать меньше инструкций, использовать имеющиеся регистры и предотвращать избыточные вычисления.
В компиляторах, использующих промежуточный язык, может быть две стадии выбора инструкций — одна для конвертирования дерева разбора в промежуточный код, а вторая — для преобразования промежуточного кода в инструкции целевой системы команд. Вторая стадия не требует обхода дерева: она может выполняться последовательно и обычно состоит из простой замены операций промежуточного языка соответствующим им кодами операций. На самом деле, если компилятор фактически является транслятором, то вторая стадия генерации кода может включать построение дерева из линейного промежуточного кода
На входе – промежуточные таблицы (подаётся дерево разбора или абстрактное синтаксическое дерево)
На выходе – текст на выходном языке.
Анализирующая часть отсутствует.
Генерирующая часть — линейная последовательность инструкций промежуточного языка.
Пятый кусок
Четыре этапа создания ПО.
Статьи к прочтению:
Возврат(cashback)(рус)
Похожие статьи:
-
Нисходящий распознаватель с возвратом
Этот распознаватель моделирует работу МП-автомата с одним состоянием q: R({q}, V,Z,,q,S,{q}). Автомат распознает цепочки КС-языка, заданного…
-
Массив Массив (или массив данных) – это набор однородных(одного типа) элементов, к которым можно обратиться по их порядковому номеру (индексу). Массив…