ВУЗ:
Составители:
1.3. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ПРОГРАММЫ
На выходе синтаксического анализатора формируется программа во внутреннем представлении.
Существует несколько различных способов представления программы в некоторой промежуточной
форме для анализа и оптимизации кода: последовательность четверок, последовательность троек, пост-
фиксная запись, префиксная запись, синтаксическое дерево.
1.3.1. Последовательность четверок
Каждая четверка записывается в виде
операция ор1, ор2, результат,
где операция – выполняемая объектным кодом функция; ор1, ор2 – операнды этой операции; результат
определяет, куда должно быть помещено результирующее значение.
Например, предложение исходной программы (рис. 1): sum: = sum + а может быть представлено
четверками следующим образом:
+ sum , а , I1
:= I1 , , sum
Здесь I1 обозначает промежуточный результат (sum + а), вторая четверка присваивает это значение
переменной sum.
Все четверки расположены в том порядке, в котором должны выполняться соответствующие инст-
рукции объектного кода, что существенно облегчает анализ для оптимизации кода. Это означает также,
что трансляция в машинные коды будет относительно простой. В табл. 5 представлена последователь-
ность четверок, соответствующая исходной программе.
За операциями геаd и write следует четверка рaram, определяющая параметры операций read и write.
Четверка рaram будет, разумеется, при окончательной генерации машинного кода оттранслирована в
список параметров. Операция > в четверке 3 сравнивает значение двух своих операндов и осуществляет
переход к четверке 9, если первый операнд больше второго. Операция goto в четверке 8 осуществляет
безусловный переход к четверке 3.
Таблица 5
Операция Операнд 1 Операнд 2 Результат
1
:
= #0 sum
2 := #1 I
3 > I #100 9)
4 read
5 param а
6 + sum а I1
7 : = I1 sum
8 goto 3)
9 div sum #100 I1
10 * а а I3
11 – I2 I3 I4
12 := I4 геz
13 write
14 param rez
15 pагаm sum
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »