ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »