Здесь используются следующие обозначения: (0,…) –лексема указывает на метку перехода;
(2,…) – лексема содержится в таблице ограничителей;
(3,…) – лексема содержится в таблице чисел;
(4,…) – лексема содержится в таблице переменных;
(5,…) – лексема содержится в таблице адресов переменных;
Процесс интерпретации программы на модельном языке М, записанной в форме ПОЛИЗа, показан в таблице 15. Таблица 15 – Ход интерпретации ПОЛИЗа программы
Стек | Текущий элемент ПОЛИЗа
| Операция | Таблицы
переменных
| адреса
| значения
| пуст
| 0
| адрес n - в стек
| 1) i
2) n
3) f
| 1) -
2) -
3)-
| 2
| 1
| значение 3 - в стек
| 1) i
2) n
3) f
| 1) -
2) -
3)-
| 2;3
| 2
| присвоить 2-му элементу таблицы число 3
| 1) i
2) n
3) f
| 1) -
2) 3
3)-
| пуст
| 3
| адрес f - в стек
| 1) i
2) n
3) f
| 1) -
2) 3
3)-
| 3
| 4
| значение 1 - в стек
| 1) i
2) n
3) f
| 1) -
2) 3
3)-
| 3;1
| 5
| присвоить 3-му элементу таблицы число 1
| 1) i
2) n
3) f
| 1) -
2) 3
3)1
| пуст
| 6
| адрес i - в стек
| 1) i
2) n
3) f
| 1) -
2) 3
3)1
| 1
| 7
| значение 1- в стек
| 1) i
2) n
3) f
| 1) -
2) 3
3) 1
| 1;1
| 8
| присвоить 1-му элементу таблицы число 1
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| пуст
| 9
| значение переменной 1 - в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1
| 10
| значение переменной 2 - в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1;2
| 11
| в стек – true, т.к. 1<=3
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| true
| 12
| метка 25 - в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| true;25
| 13
| переход, к следующему элементу
ПОЛИЗа, т.к. условие истинно
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| пуст
| 14
| адрес f- в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 3
| 15
| значение переменной f- в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 3;1
| 16
| значение переменной i- в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
|
Продолжение таблицы 15
3;1;1
| 17
| извлечь из стека 1 и 1 и поместить в стек их произведение
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 3;1
| 18
| присвоить 3-му элементу таблицы число 1
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| пуст
| 19
| адрес i- в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1
| 20
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1;1
| 21
| число 1 – в стек
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1;1;1
| 22
| извлечь из стека 1 и 1 и поместить в стек их сумму
| 1) i
2) n
3) f
| 1) 1
2) 3
3)1
| 1;2
| 23
| присвоить 1-му элементу таблицы число 2
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| пуст
| 24
| метка 8 в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 8
| 25
| переход к элементу
ПОЛИЗа, с номером, извлекаемым из вершины стека
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| пуст
| 8
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 2
| 9
| значение переменной n - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 2;3
| 10
| в стек – true, т.к. 2<=3
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| true
| 11
| метка 25 – в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| true;25
| 12
| переход, к следующему элементу
ПОЛИЗа, т.к. условие истинно
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| пуст
| 13
| адрес переменной f - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 3
| 14
| значение переменной f - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 3,1
| 15
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
|
Продолжение таблицы 15
3,1,2
| 16
| Перемножение верхних элементов стека
| 1) i
2) n
3) f
| 1) 2
2) 3
3)1
| 3,2
| 17
| Запись значения в адрес 3
| 1) i
2) n
3) f
| 1) 2
2) 3
3)2
| пуст
| 18
| адрес i- в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)2
| 1
| 19
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)2
| 1,2
| 20
| число 1 – в стек
| 1) i
2) n
3) f
| 1) 2
2) 3
3)2
| 1,2,1
| 21
| извлечь из стека 2 и 1 и поместить в стек их сумму
| 1) i
2) n
3) f
| 1) 2
2) 3
3)2
| 1,3
| 22
| Запись значения в адрес 1
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| пуст
| 23
| метка 8 в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 8
| 24
| переход к элементу
ПОЛИЗа, с номером, извлекаемым из вершины стека
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| пуст
| 8
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3
| 9
| значение переменной n - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3,3
| 10
| в стек – true, т.к. 3<=3
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| true
| 11
| метка 25 – в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| true,25
| 12
| переход, к следующему элементу
ПОЛИЗа, т.к. условие истинно
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| пуст
| 13
| адрес переменной f - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3
| 14
| значение переменной f - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3,2
| 15
| значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3,2,3
| 16
| Перемножение верхних элементов стека
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 3,6
| 17
| Запись значения в адрес 3
| 1) i
2) n
3) f
| 1) 3
2) 3
3)6
|
Продолжение таблицы 15
пуст
| 18
| адрес i- в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)6
| 1
| 19
| Значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)6
| 1,3
| 20
| число 1 – в стек
| 1) i
2) n
3) f
| 1) 3
2) 3
3)6
| 1,3,1
| 21
| извлечь из стека 3 и 1 и поместить в стек их сумму
| 1) i
2) n
3) f
| 1) 3
2) 3
3)2
| 1,4
| 22
| Запись значения в адрес 1
| 1) i
2) n
3) f
| 1) 4
2) 3
3)2
| пуст
| 23
| метка 8 в стек
| 1) i
2) n
3) f
| 1)4
2) 3
3)6
| 8
| 24
| переход к элементу
ПОЛИЗа, с номером, извлекаемым из вершины стека
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| пуст
| 8
| Значение переменной i - в стек
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| 1
| 9
| Значение переменной n - в стек
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| 1,4
| 10
| в стек – false, т.к. 4 >3
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| false
| 11
| метка 25 – в стек
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| 25
| 12
| переход, к элементу 25 из стека, т.к. условие ложно
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| пуст
| 25
| Значение переменной f - в стек
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
| 6
| 26
| вывести на экран число из верхушки стека
| 1) i
2) n
3) f
| 1) 4
2) 3
3)6
|
|