Page 50 - 4761
P. 50
4 ВНУТРІШНЄ ПРЕДСТАВЛЕННЯ ПРОГРАМИ
4.1 Способи внутрішнього представлення програм (ВПП)
Всі способи внутрішнього представлення програми, як правило, містять в собі дві
принципово різні речі – оператори та операнди. Різниця між формами внутрішнього
представлення програми тільки в тому, як оператори і операнди з’єднуються між собою.
Є наступні форми (ВПП):
- зв’язні спискові структури, які представляють синтаксичні дерева;
- багатоадресний код з явно названим результатом (тетради);
- багатоадресний код з неявно названим результатом (тріади);
- зворотній польский запис операцій;
- асемблерний код або машинні команди;
Синтаксичні дерева – структура, яка є результатом роботи синтаксичного
аналізатора – це машинно незалежна форма ВПП. Недолік – вони представляють складні
зв’язні структури, а тому не можуть бути тривіальним чином перетворені в якісну
послідовність команд результуючої програми.
Вони можуть бути перетворені в другі форми ВПП.
Тетради представляють собою запис операцій в формі 4-х складових: операція, 2
операнда і результат операції. Наприклад, <операція>, (<операнд 1>, <операнд 2>,
<результат операції>).
Тетради представляють собою лінійну послідовність команд. При обчисленні
виразу, записаного у формі тетрад, вони обчислюються одна за другою послідовно. Якщо
якийсь з операндів в тетраді відсутній , то він може бути пропущеним, або замінений
пустим операндом (наприклад, ). Результат пропущеним не може бути.
Оскільки тетради це лінійна послідовність, тому нескладно написати тривіальний
алгоритм, який буде перетворювати послідовність тетрад в послідовні команди
результуючої програми. В цьому перевага. Це машинно незалежна форма представлення
програми.
Приклад 4.1. Вираз A:=B*C+D-B*10, запишемо у вигляді тетрад.
1. *(B, C, T1)
2. +(T1, D, T2)
3. *(B, T0, T3)
4. –(T2, T3, T4)
5. :=(T4, , ∆), де – незначущий операнд
Іденфікатори Т1,...Т4, тимчасові змінні, які використовуються для збереження
обчислення тетрад.
Тетради вимагають більше пам’яті, ніж тріади і не відображають взаємозв’язок
операцій між собою.
Недолік: складності з перетворенням в машинний код.
Тріади представляють собою запис операцій в формі з 3-х складових: операція і
два операнди. Наприклад, <операція>, (<операнд 1>, <операнд 2).
Особливістю тріад є те, що один або два операнди можуть бути посиланням на
другу тріаду в тому випадку, якщо операнд деякої тріад виступає як результат виконання
другої тріади. Тому тріади при запису послідовно нумерують для зручності указування
посилань одних тріад на інші.
48