Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП_шпоры.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.21 Mб
Скачать

Вопрос 44

Интерпретатор программы

Запись программы в форме ПОЛИЗа удобна для последующей интерпретации (выполнения программы) с помощью стека. Массив ПОЛИЗа просматривается один раз слева направо, при этом:

1) если очередной элемент ПОЛИЗа является операндом, то его значение заносят в стек;

2) если очередной элемент – операция, то на «верхушке» стека находятся ее операнды, которые извлекаются из стека, над ними выполняется соответствующая операция, результат которой заносится в стек;

3) интерпретация продолжается до тех пор, пока не будет считана из ПОЛИЗа точка, стек при этом должен быть пуст.

Пример 2.18. Интерпретировать ПОЛИЗ программы, заданный таблицей 2.5 при введенном значении а, равном 7.

Таблица 2.5 – ПОЛИЗ исходной программы

Продолжение таблицы 2.5 – ПОЛИЗ исходной программы

Вопрос 45 Схемы компиляции

Выделяют две основные схемы компиляции:

- последовательную; - интегрированную.

Определение 5.1. Последовательная схема компиляции – это совокупность последовательно выполняемых программных компонентов, каждый из которых соответствует одному этапу компиляции.

Последовательная схема предполагает не менее одного прохода программы на каждом этапе (рисунок 5.1 а). Построение промежуточной программы не требует наличия разбора, и синтаксический анализатор может не выполнять никакого преобразования программы. Последовательная схема проста и понятна, но она громоздка (по объему занимаемой памяти и времени компиляции программы) и применяется редко.

Определение 5.2. Интегрированная схема компиляции – это схема, в которой компоненты выполняются под управлением синтаксического анализатора. Синтаксический анализатор, осуществляя разбор программы, вызывает лексический анализатор для сборки лексемы, когда в этом возникает необходимость. После завершения распознавания каждой синтаксической единицы программы вызывается семантический анализатор для ее обработки. Главная идея состоит в том, чтобы в ходе построения дерева разбора решать задачи последующих этапов компиляции для каждого вновь сформированного узла. Интеграция приводит к усложнению алгоритмов компиляции. Поэтому выбор подходящей структуры компилятора - сложная задача.

Вопрос 46

СУ-схемы

Интегрированные схемы компиляции базируются на теории перевода языков, основными понятиями которой являются схема синтаксически управляемого перевода (СУ-схема), синтаксически управляемый перевод (СУ - перевод), преобразователь с магазинной памятью (МП - преобразователь). Рассмотрим эти понятия.

Определение 5.3. СУ-схемой Т называется пятерка следующих объектов:

T = {VT, VN, , R, S),

где VT - конечный входной алфавит, терминалы;

VN - конечное множество нетерминалов;

- конечный выходной алфавит;

R - конечное множество правил вида A , , где V*,  (VN)*;

S - начальный символ схемы.

Определение 5.4. СУ-схема называется простой, если в каждом правиле A , одноименные нетерминалы встречаются в и в одном и том же порядке.

Определение 5.5. СУ-схема называется постфиксной, если VN** в каждом правиле A , R.

Определение 5.6. СУ-переводом, генерируемым СУ-схемой T, называется множество пар:

Определение 5.7. Грамматика GBX = {VT, VN, P, S), где Р = {А | A , R}, называется входной грамматикой СУ-схемы. Грамматика GВЫХ = { , VN, P, S), где P = {А | A , R}, называется выходной грамматикой СУ-схемы.

Пример 5.1. Рассмотрим СУ-схему Т1 перевода логических выражений в польскую обратную запись. В основе этой схемы лежит соответствие правил записи логических выражений в инфиксной форме и в ПОЛИЗе.

Правила инфиксной формы: Правила ПОЛИЗа:

SE

SE

EET

EET

ET

ET

TTF

TTF

TF

TF

F(E)

FE

FF

FF

Fимя

Fимя

СУ-схема Т1 представляется пятеркой Т1 = {VT, VN, , R, S), где S – начальный символ, VT = {, , , имя, (, )}; = {, , , имя}; VN = {S, Е, T, F} и множество R содержит следующие правила:

1) SE, E 2) EET, ET 3) ET, T 4) TTF, TF

5) TF, F 6) F(E), E 7) F F, F 7) Fимя, имя

Здесь имя – любой символ латинского алфавита. Входной грамматикой СУ-схемы Т1 является GВХ = (VT, VN, Р, S), где множество правил Р представлено правилами инфиксной формы. GВЫХ = ( , VN, P, S) - выходная грамматика СУ-схемы T1, а ее правила Р - это правила ПОЛИЗа. Т1 - простая постфиксная СУ-схема. Вывод элемента (abc, abc) имеет вид:

(S, S)(ET, ET)(ETF, ETF)(ETс, ETс)(EFс, EFс) (Ebс, Ebс)(Tbс, Tbс)(Fbс, Fbс)(abc, abc).

СУ-схема T1 порождает элемент перевода (abс, abс) (T1).