Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7. Генератор внутреннего представления программы.pdf
Скачиваний:
19
Добавлен:
12.01.2020
Размер:
436.49 Кб
Скачать

Интерпретатор ПОЛИЗа для модельного языка

if (eq ("-"))

{arg = ipop(); ipush (ipop()–arg); break;}

/ аналогично для других двуместных арифметических и логических операций /

if (eq ("not"))

{ipush (!ipop());break;}; if (eq ("!"))

{j = ipop(); i = j-1; break;};

/ интерпретация будет продолжена с j-го элемента ПОЛИЗа /

Интерпретатор ПОЛИЗа для модельного языка

if (eq ("!F"))

{j = ipop(); arg = ipop(); if (!arg)

{i = j-1}; break;};

/ если значение arg ложно, то интерпретация будет

продолжена с j-го элемента ПОЛИЗа, иначе порядок не изменится /

if (eq (":="))

{arg = ipop(); ip = (int )ipop();ip = arg; break;};

Интерпретатор ПОЛИЗа для модельного языка

if (eq ("R"))

{ip = ( int) ipop(); scanf("%d", ip); break;}; / "R" – обозначение операции ввода /

if (eq ("W"))

{arg = ipop(); printf ("%d", arg); break;}; / "W" – обозначение операции вывода /

case 3:

ip = = TNUM[curr_lex.value].address; ipush( ip); break;

/ значение константы – в стек /

Интерпретатор ПОЛИЗа для модельного языка

case 4:

ip = = TID [curr_lex.value].address; ipush( ip); break;

/ значение переменной – в стек /

case 5:

ip = = TID [curr_lex.value}.address; ipush((int)ip); break;

/ адрес переменной – в стек / } / конец switch /

} / конец for /