Скачиваний:
10
Добавлен:
01.05.2014
Размер:
1.03 Mб
Скачать

Представление основных операторов в полиз

Оператор

Код

Операнды

Семантика оператора

Вычисление адреса элемента массива

@SUBS

A, i1, …, in, k

Вычисление адреса элемента массива A; i1, …, in – индексные выражения,

k = n+1 – число операндов операции

Оператор присваивания

@SET

R, E

Оператор присваивания R := E

Определение метки

@DEFL

m

Определение метки m

Переход по метке

@JMP

m

Переход на метку m (m – идентификатор метки)

Переход по условию

@JMPF

m, Flag

Переход на m (m – метка или номер элемента ПОЛИЗ) при Flag = FALSE

Преобразование целого к рациональному

@ITOR

A

Преобразование целого A к рациональному

Преобразование целого к вещественному

@ITOR2

A, _

Преобразование целого A к рациональному

Ввод

@INPUT

A

Ввод со входного потока согласно типу A

Вывод

@OUTPUT

A

Вывод во входной поток согласно типу A

Операции отношения «равно» для целых чисел

@=INT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «равно» для рациональных чисел

@=RAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Операции отношения «не равно» для целых чисел

@<>INT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Операции отношения «не равно» для рациональных чисел

@<>RAT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «меньше» для целых чисел

@<INT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «меньше» для рациональных чисел

@<RAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Операции отношения «меньше либо равно» для целых чисел

@<=INT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «меньше либо равно» для рациональных чисел

@<=RAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Операции отношения «больше» для целых чисел

@>INT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «больше» для рациональных чисел

@>RAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Операции отношения «больше либо равно» для целых чисел

@>=INT

A1, A2

Бинарная операция для целых, возвращает результат типа boolean

Операции отношения «больше либо равно» для рациональных чисел

@>=RAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа boolean

Логическая операция

“и”

@AND

A1, A2

Бинарная операция для переменных типа boolean, возвращает результат типа boolean

Логическая операция

“или”

@OR

A1, A2

Бинарная операция для переменных типа boolean, возвращает результат типа boolean

Логическая операция

“не”

@NOT

A

Унарная операция для переменных типа boolean, возвращает результат типа boolean

Операции изменения знака на противоположный для целых чисел

@NEGINT

A

Унарная операция для целых,

возвращает результат типа boolean

Операции изменения знака на противоположный для рациональных чисел

@NEGRAT

A

Унарная операция для рациональных,

возвращает результат типа boolean

Операции вычитания для целых чисел

@SUBINT

A1, A2

Бинарная операция для целых, возвращает результат типа integer

Операции вычитания для рациональных чисел

@SUBRAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа rational

Операция инкремент для целых чисел

@INC

A

Унарная операция для целых чисел возвращает результат типа integer

Операция декремент для целых чисел

@DEC

A

Унарная операция для целых чисел возвращает результат типа integer

Операции сложения для целых чисел

@ADDINT

A1, A2

Бинарная операция для целых, возвращает результат типа integer

Операции сложения для рациональных чисел

@ADDRAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа rational

Операции умножения для целых чисел

@MULINT

A1, A2

Бинарная операция для целых, возвращает результат типа integer

Операции умножения для рациональных чисел

@MULRAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа rational

Операции деления для целых чисел

@DIVINT

A1, A2

Бинарная операция для целых, возвращает результат типа integer

Операции деления для рациональных чисел

@DIVRAT

A1, A2

Бинарная операция для рациональных, возвращает результат типа rational

Общий знаменатель для рациональных чисел

@COMMON

A1, A2

Бинарная операция для рациональных, возвращает результат типа integer

Дробная часть рационального числа

@FRAC

A

Унарная операция для рациональных, возвращает результат типа rational

Целая часть рационального числа

@INT

A

Унарная операция для рациональных, возвращает результат типа integer

Приведение к простой дроби

@SIMPLIFY

A

Унарная операция для рациональных, возвращает результат типа rational

Замечание: для всех бинарных операций, подразумевающих A op B, где A и B операнды, в стек исполнения ПОЛИЗ операнды кладутся в прямом порядке, то есть сначала A, а затем B, а извлекаются в обратном.

Неформальное описание

Перевод обращения к переменной

Входная конструкция

Перевод в ПОЛИЗ

A[x1, x2,,..xn]

A

x1

x2

xn

n + 1

@SUBS

Пример

A[x + 5, y - 1][z] . numerator

A

x

5

+

y

1

-

z

4

@SUBS

@NUMERATOR

Перевод условного оператора

Входная конструкция

Перевод в ПОЛИЗ

IF

Логическое выражение

THEN

Операторы

ELSE

Операторы

Перевод логического выражения в ПОЛИЗ

m1

@JMPF

Перевод операторов

m2

@JMP

m1

@DEFL

Перевод операторов

m2

@DEFL

Пример

if 1 > 10 + i then A[ i ] := 5

else i := 1

1

10

i

+

@>INT

m1

@JMPF

A

I

2

@SUBS

5

@SET

m2

@JMP

m1

@DEFL

i

1

@SET

m2

@DEFL

Перевод цикла с параметром

Входная конструкция

Перевод в ПОЛИЗ

for i := выражение1 to выражение2 do

оператор

i

выражение1 в ПОЛИЗЕ

@SET

создать временную переменную R типа integer и записать на выходную ленту

выражение2 в ПОЛИЗЕ

@SET

m1

@DEFL

i

R

@<=INT

m2

@JMPF

Перевод оператора

i

@INC

m1

@JMP

m2

@DEFL

Соседние файлы в папке Бяша