ВУЗ:
Составители:
10
Для достижения высокой скорости компиляции применяется
компилятор с однопроходной структурой (рис.1.2). На рисунке связи по
управлению показаны сплошными линиями, передача данных – пунктиром.
Исходная
программа
Лексический анализатор
Синтаксический анализатор
Лексема
Фрагмент
постфиксной
записи
Генератор кода
Фрагмент
объектного
кода
Рис.1.2. Однопроходный транслятор.
В этом случае синтаксический анализатор выступает в роли основной
управляющей программы, вызывая блок сканирования и генератор кода,
организованные в виде подпрограмм. Синтаксический анализатор постоянно
обращается к блоку сканирования, получая от него лексему за лексемой из
просматриваемой программы, до тех пор, пока не построит новый элемент
постфиксной записи,
после чего он обращается к генератору кода, который
создает объектный код для этого фрагмента программы.
Преимущество:
Максимальная эффективность и скорость выполнения, так как
программа просматривается лишь однажды, количество операций обращения
к файлам минимально (только чтение из исходного и запись в объектный
файлы).
Недостатки:
1. Проблемы при организации переходов вперед. Например, во время
обработки предложения
GOTO метка;
могут встретиться трудности, так как "метка" еще не встречалась в тексте
программы.
10
Для достижения высокой скорости компиляции применяется
компилятор с однопроходной структурой (рис.1.2). На рисунке связи по
управлению показаны сплошными линиями, передача данных – пунктиром.
Исходная Синтаксический анализатор
программа Фрагмент
постфиксной
Лексема записи
Лексический анализатор Генератор кода
Фрагмент
объектного
кода
Рис.1.2. Однопроходный транслятор.
В этом случае синтаксический анализатор выступает в роли основной
управляющей программы, вызывая блок сканирования и генератор кода,
организованные в виде подпрограмм. Синтаксический анализатор постоянно
обращается к блоку сканирования, получая от него лексему за лексемой из
просматриваемой программы, до тех пор, пока не построит новый элемент
постфиксной записи, после чего он обращается к генератору кода, который
создает объектный код для этого фрагмента программы.
Преимущество:
Максимальная эффективность и скорость выполнения, так как
программа просматривается лишь однажды, количество операций обращения
к файлам минимально (только чтение из исходного и запись в объектный
файлы).
Недостатки:
1. Проблемы при организации переходов вперед. Например, во время
обработки предложения
GOTO метка;
могут встретиться трудности, так как "метка" еще не встречалась в тексте
программы.
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »
