Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2. Основы компиляции.doc
Скачиваний:
12
Добавлен:
18.05.2015
Размер:
57.34 Кб
Скачать

2.10. Промежуточная форма представления программы.

2.10.1. Польская запись.

Для представления арифметических и логических выражений часто используется польская запись, которая просто и точно указывает порядок выполнения операций. Кроме того, она не требует скобок. В этой записи, впервые примененной польским логиком Я. Лукашевичем, операторы следуют непосредственно за операндами. Поэтому ее иногда называют постфиксной записью. Классическая форма записи, как мы обычно пишем, называется инфиксной.

A*B --> AB*

A*B+C-->AB*C+ A*(B+C/D)-->ABCD/+* A*B+C*D-->AB*CD*+

Правила представления в польской записи: 1) Идентификаторы следуют в том же порядке, что и в инфиксной записи 2) Операторы следуют в том же порядке, в каком они должны вычисляться(слева направо) 3) Операторы располагаются непосредственно за своими операндами.

Перевод из постфиксную запись осуществляется при помощи стека.

2.10.2. Метод четверок.

Каждая четверка записывается в виде

операция, op1, op2, результат,

где операция - это выполняемая объектным кодом функция

op1, op2 - операнды этой операции

Например, (-a+b)*(c+d) будет соответствовать такой последовательности четверок

- a, 1

+ 1, b 2

+ c, d 3

* 2, 3, 4

Из сформированных четверок нетрудно сгенерировать машинный код.

Для примера можно посмотреть программу простейшего интерпретатора Паскаля - подобного языка, который может реализовать только арифметические операции и оператор Case, при чем все числа находятся в шестнадцатиричной системе счисления.

7