Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 9 стр.

UptoLike

9
новое представление программы, например, в постфиксной форме. Наконец,
этот файл считывается генератором кода, который создает объектный код
программы.
Компилятор такого вида называется трехпроходным (рис.1.1), так как
программа считывается трижды (исходный текст программы, файл лексем и
файл в постфиксной форме).
Недостаток:
Невысокая скорость выполнения, так как в большинстве
вычислительных систем операции, связанные с обращением к файлам,
осуществляются сравнительно медленно.
Преимущества:
Относительная независимость каждой фазы компилирования. Так как
связь между обрабатывающими блоками осуществляется только через файлы
данных, любой проход может быть реализован независимо от остальных. Это
обеспечивает:
1. Возможность автономной разработки различных блоков компилятора
разными разработчиками, необходимо только согласовать форматы
промежуточных файлов.
2. Гибкость компилятора. Например, для реализации одного и того
же
языка для различных типов компьютеров, возможно использовать одни
и те же блоки сканирования и синтаксического анализа, но написать
специальные генераторы кода для каждого типа компьютера. При
реализации семейства компиляторов с различных языков для одного
типа компьютеров, очевидно, потребуются различные блоки
сканирования и синтаксического анализа, но возможно использование
общего генератора кода
.
3. Минимальные требования к объему используемой оперативной памяти
(модули различных фаз компиляции можно загружать по очереди,
выгружая при этом предыдущий).
                                                                          9

новое представление программы, например, в постфиксной форме. Наконец,
этот файл считывается генератором кода, который создает объектный код
программы.
    Компилятор такого вида называется трехпроходным (рис.1.1), так как
программа считывается трижды (исходный текст программы, файл лексем и
файл в постфиксной форме).
    Недостаток:
    Невысокая      скорость    выполнения,    так   как    в   большинстве
вычислительных систем операции, связанные с обращением к файлам,
осуществляются сравнительно медленно.
    Преимущества:
    Относительная независимость каждой фазы компилирования. Так как
связь между обрабатывающими блоками осуществляется только через файлы
данных, любой проход может быть реализован независимо от остальных. Это
обеспечивает:
 1. Возможность автономной разработки различных блоков компилятора
    разными разработчиками, необходимо только согласовать форматы
    промежуточных файлов.
 2. Гибкость компилятора. Например, для реализации одного и того же
    языка для различных типов компьютеров, возможно использовать одни
    и те же блоки сканирования и синтаксического анализа, но написать
    специальные генераторы кода для каждого типа компьютера. При
    реализации семейства компиляторов с различных языков для одного
    типа     компьютеров,     очевидно,   потребуются     различные   блоки
    сканирования и синтаксического анализа, но возможно использование
    общего генератора кода.
 3. Минимальные требования к объему используемой оперативной памяти
    (модули различных фаз компиляции можно загружать по очереди,
    выгружая при этом предыдущий).