63
Одним из возможных вариантов организации рабочего стека является
использование т.н. тегового стека. В теговом стеке каждый хранимый
элемент предваряется неким описателем его типа, называемым тегом. Тег
может содержать самую разнообразную информацию, описывающую данные
– тип, размер, права доступа и т.д.
Для простейшего интерпретатора можно различать такие типы данных,
как числовые, строковые и адресные. В качестве адреса в простейшем случае
может использоваться целое число – номер записи в таблице имен.
ТЕТРАДЫ
Добавление тетрад с другими операторами также не вызывает
трудностей и происходит аналогично. Тот же фрагмент программы,
представленный в форме тетрад, выглядит так:
(1) $BLOCK (10) + K, T4, T5
(2) - I, J, T1 (11) := T5,, K
(3) $BOUNDS 1, T1 (12) $BR 18
(4) $ADEC A (13) + I, 1, T6
(5) := 0,, K (14) := T6,, I
(6) - I, J, T2 (15) + I, 1, T7
(7) $BMZ 13, T2 (16) := T7,, I
(8) - I, J, T3 (17) $BRL L
(9) * A[T3], 6, T4 (18) $BLOCKEND
Здесь используются следующие операторы:
Оператор Операнды Описание
$BR i переход на i-ю тетраду
$BZ (BP,BM) i, P переход на i-ю тетраду, если P=0 (P>0,P<0)
$BG (BL,BE) i, P1, P2 переход на i-ю тетраду, если P1>P2
(P1<P2,P1=P2)
$BRL P переход на тетраду, номер которой задан в P-
м элементе таблицы символов
$BOUNDS P1, P2 P1 и P2 описывают граничную пару массива
$ADEC P Массив описан в P. Если размерность
массива равна n, то этой тетраде должны
предшествовать n операторов $BOUNDS,
задающих n граничных пар
С тетрадой номер 9 могут возникнуть определенные проблемы.
Трудности связаны с использованием аргумента в виде переменной с
индексом. Решение может заключаться в использовании той же методики, что
и в случае описания массивов.