ВУЗ:
Составители:
29
2.6 Генерация внутреннего представления программы
Результатом СиА должно быть некоторое внутреннее представление ис-
ходной цепочки лексем, которое отражает ее синтаксическую структуру. Про-
грамма в таком виде может либо транслироваться в объектный код, либо ин-
терпретироваться.
Выделяют следующие общепринятые способы внутреннего представле-
ния программы:
1)
постфиксная запись;
2)
многоадресный код с явно именуемым результатом (тетрады);
3)
многоадресный код с неявно именуемым результатом (триады);
4)
синтаксические деревья;
5)
машинные команды или ассемблерный код.
В качестве языка для представления промежуточной программы выберем
постфиксную запись – ПОЛИЗ (польская инверсная запись).
Перевод в ПОЛИЗ выражений
В ПОЛИЗе операнды записаны слева направо в порядке использования.
Знаки операций следуют таким образом, что знаку операции непосредственно
предшествуют его операнды.
Пример 2.13. Для выражения в обычной (инфиксной записи)
a*(b+c)-(d-e)/f ПОЛИЗ будет иметь вид: abc+*de-f/-.
Справедливы следующие формальные определения.
Определение 2.5. Если Е является единственным операндом, то ПОЛИЗ
выражения Е – это этот операнд.
Определение 2.6. ПОЛИЗ выражения Е
1
θ
Е
2
, где
θ
- знак бинарной опе-
рации, Е
1
и Е
2
– операнды для θ, является запись
θ
′
′
21
EE , где
′′
21
, EE - ПОЛИЗ
выражений Е
1
и Е
2
соответственно.
Определение 2.7. ПОЛИЗ выражения
θ
Е, где
θ
- знак унарной операции,
а Е – операнд
θ
, есть запись
θ
′
1
E , где
′
E
- ПОЛИЗ выражения Е.
Определение 2.8. ПОЛИЗ выражения (Е) есть ПОЛИЗ выражения Е.
Перевод в ПОЛИЗ операторов
Каждый оператор языка программирования может быть представлен как
n-местная операция с семантикой, соответствующей семантике оператора.
Оператор присваивания I:=E в ПОЛИЗе записывается:
I
E:=,
где «:=» - двуместная операция,
I, E – операнды операции присваивания;
I – означает, что операндом операции «:=» является адрес переменной
I, а не ее значение.
2.6 Генерация внутреннего представления программы
Результатом СиА должно быть некоторое внутреннее представление ис-
ходной цепочки лексем, которое отражает ее синтаксическую структуру. Про-
грамма в таком виде может либо транслироваться в объектный код, либо ин-
терпретироваться.
Выделяют следующие общепринятые способы внутреннего представле-
ния программы:
1) постфиксная запись;
2) многоадресный код с явно именуемым результатом (тетрады);
3) многоадресный код с неявно именуемым результатом (триады);
4) синтаксические деревья;
5) машинные команды или ассемблерный код.
В качестве языка для представления промежуточной программы выберем
постфиксную запись – ПОЛИЗ (польская инверсная запись).
Перевод в ПОЛИЗ выражений
В ПОЛИЗе операнды записаны слева направо в порядке использования.
Знаки операций следуют таким образом, что знаку операции непосредственно
предшествуют его операнды.
Пример 2.13. Для выражения в обычной (инфиксной записи)
a*(b+c)-(d-e)/f ПОЛИЗ будет иметь вид: abc+*de-f/-.
Справедливы следующие формальные определения.
Определение 2.5. Если Е является единственным операндом, то ПОЛИЗ
выражения Е – это этот операнд.
Определение 2.6. ПОЛИЗ выражения Е1 θ Е2, где θ - знак бинарной опе-
рации, Е и Е – операнды для θ, является запись E ′ E ′θ , где E ′ , E ′ - ПОЛИЗ
1 2 1 2 1 2
выражений Е1 и Е2 соответственно.
Определение 2.7. ПОЛИЗ выражения θЕ, где θ - знак унарной операции,
а Е – операнд θ, есть запись E ′θ , где E ′ - ПОЛИЗ выражения Е.
1
Определение 2.8. ПОЛИЗ выражения (Е) есть ПОЛИЗ выражения Е.
Перевод в ПОЛИЗ операторов
Каждый оператор языка программирования может быть представлен как
n-местная операция с семантикой, соответствующей семантике оператора.
Оператор присваивания I:=E в ПОЛИЗе записывается:
IE:=,
где «:=» - двуместная операция,
I, E – операнды операции присваивания;
I – означает, что операндом операции «:=» является адрес переменной
I, а не ее значение.
29
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »
