На выходе из синтаксического анализатора получим:
Длина
констант типа int
Таблица
констант типа int
Длина
констант типа real
Таблица
констант типа real
Длина
переменных типа int
Таблица
переменных типа int
Длина
переменных типа real
Таблица
переменных типа real
Длина ОПС
ОПС
При
реализации процедур и функций у нас в
языке появляются Описания и Вызовы.
Вызовы
функций – операнды в формулах.
Вызов
процедур как и во всех языках.
В
момент вызова процедуры или функции
должна работать автономная программа
со своим локальным блоком памяти. Все
фактические параметры и внутренние
переменные локальны для конкретного
вызова. Т.е. нужно предусмотреть выделение
блока памяти по типу стека (для локальных
переменных) при каждом вызове. И этот
стек можно совместить с основным стеком
вычислений, которые использует
интерпретатор.
Тогда
ОПС может иметь такой вид:
Pr(a,b,c,d);
Если
считать что в момент вызова порядок
операндов не меняется, то:
Pr
– имя процедуры, операнд
Нужно
предусмотреть счетчик количества
параметров в вызове процедуры (4).
Pr
abcd 4 сall
точка возврата
Сall –
универсальная процедура вызова
«Возврат
из процедуры» – операция, должна стоять
в конце процедуры, должна привести стек
в такой вид, который был до вызова.