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