Скачиваний:
203
Добавлен:
27.01.2015
Размер:
1.66 Mб
Скачать

Приложение д полиз и интерпретация программы

Интерпретируем следующую программу:

{

i,n,f:integer;

read(n);

f as 1;

for i as 1 to n do f as f*I;

write(f)

}

ПОЛИЗ данной программы будет иметь вид:

Таблица 14 – ПОЛИЗ исходной программы

Лексема

n

R

f

1

=

i

1

=

i

n

(n, k)

(5,2)

(2,15)

(5,3)

(3,1)

(2,5)

(5,2)

(3,1)

(2,5)

(4,1)

(4,2)

Номер

0

1

2

3

4

5

6

7

8

9

Продолжение таблицы 14

Лексема

<=

25

!F

f

F

i

*

=

i

i

1

(n, k)

(2,2)

(0,25)

(2,14)

(5,3)

(4,3)

(4,1)

(2,3)

(2,5)

(5,1)

(4,1)

(3,1)

Номер

10

11

12

13

14

15

16

17

18

19

20

Продолжение таблицы 14

Лексема

+

=

8

!

F

W

(n,k)

(2,1)

(2,5)

(0,8)

(2,13)

(4,3)

(2,16)

Номер

21

22

23

24

25

26

Здесь используются следующие обозначения:

(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