ВУЗ:
Составители:
12
промежуточное положение между двумя описанными выше вариантами
организации. В этом случае синтаксический анализатор, вызывая блок
сканирования, получает лексему за лексемой и строит файл постфиксной
записи программы. Генератор кода считывает этот файл и создает объектный
код программы. Подобной структуре свойственно относительно небольшое
время выполнения, так как программа считывается лишь дважды (исходный
текст
и постфиксная запись). В этом случае легко разрешается проблема с
оператором перехода вперед на метку, так как эта метка считывается на фазе
первого прохода, перед вызовом генератора кода. В такой компилятор при
необходимости легко включить блок оптимизации.
Исходная
программа
Лексический анализатор
Синтаксический анализатор
Лексема
Файл
постфиксной
записи
Генератор кода
Файл
объектного
кода
Рис.1.3. Двухпроходный транслятор.
Возможны различные модификации рассмотренных схем. Ясно, что
рассмотренные типы компиляторов проявляют свои достоинства в
определенных условиях работы и оказываются неэффективными в других
случаях.
Интерпретаторы
реализуют принцип, альтернативный
компилированию. Компиляторы и интерпретаторы имеют много общего.
Интерпретатор, тоже вначале просматривает исходную программу и
выделяет в ней лексемы. Для этого используются блоки сканирования и
анализаторы, аналогичные тем, которые входят в состав компилирующих
программ. Однако интерпретатор вместо построения объектного кода,
12 промежуточное положение между двумя описанными выше вариантами организации. В этом случае синтаксический анализатор, вызывая блок сканирования, получает лексему за лексемой и строит файл постфиксной записи программы. Генератор кода считывает этот файл и создает объектный код программы. Подобной структуре свойственно относительно небольшое время выполнения, так как программа считывается лишь дважды (исходный текст и постфиксная запись). В этом случае легко разрешается проблема с оператором перехода вперед на метку, так как эта метка считывается на фазе первого прохода, перед вызовом генератора кода. В такой компилятор при необходимости легко включить блок оптимизации. Исходная Синтаксический анализатор программа Файл постфиксной Лексема записи Лексический анализатор Генератор кода Файл объектного кода Рис.1.3. Двухпроходный транслятор. Возможны различные модификации рассмотренных схем. Ясно, что рассмотренные типы компиляторов проявляют свои достоинства в определенных условиях работы и оказываются неэффективными в других случаях. Интерпретаторы реализуют принцип, альтернативный компилированию. Компиляторы и интерпретаторы имеют много общего. Интерпретатор, тоже вначале просматривает исходную программу и выделяет в ней лексемы. Для этого используются блоки сканирования и анализаторы, аналогичные тем, которые входят в состав компилирующих программ. Однако интерпретатор вместо построения объектного кода,
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »