Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2008-04-14-02-21-Наталья-.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
825.86 Кб
Скачать

Описание промежуточного языка.

Тип промежуточного языка, используемого представления программы после синтаксического анализа, определен в задании на курсовую работу.

В данном разделе пояснительной записки необходимо изложить процесс выбора операторов промежуточного языка, используемых для описания перевода, и описать их семантику.

Промежуточным языком являются тетрады.

Операнды одной тетрады должны быть одинаково типа, так как соответствие типов в нашем языке структурное, то неодинаковые типы преобразуются к одинаковому автоматически.

Для доступа к элементу массива необходимо использовать тетраду

SUBS, a,i,t , которая будет интерпретирована как операция доступа a[i].

Синтаксис

Семантика

КОП

ОП1

ОП2

Рез

DEFL

L

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

BRL

L

Безусловный переход на метку L I

BF

L

R

Переход на метку L, если значение выражения R равно “ложь”: R = False

+

a

b

R

Сложение R =a + b

-

a

b

R

Вычитание R =a – b

*

a

b

R

Умножение R =a * b

/

a

b

R

Деление R =a / b

<

a

b

R

В R хранится результат вычисления логического выражения a < b

<=

a

b

R

В R хранится результат вычисления логического выражения a <= b

>

a

b

R

В R хранится результат вычисления логического выражения a > b

>=

a

b

R

В R хранится результат вычисления логического выражения a >= b

==

a

b

R

В R хранится результат вычисления логического выражения a == b

!=

a

b

R

В R хранится результат вычисления логического выражения a != b

+=

a

b

a

Сложение a+=b

*=

a

b

a

Умножение a*=b

/=

a

b

a

Деление a/=b

-=

a

b

a

Вычитание a-=b

++

a

1

a

Инкремент а

:=

b

a

a:=b

OR

a

b

R

В R хранится булевская переменная, соответствующая логическому ИЛИ a и b

AND

a

b

R

В R хранится булевская переменная, соответствующая логическому И a и b

NOT

a

R

В R хранится НЕ а

SUBS

a

i

R

чтение из a[i]. Результат-новое значение Е=a[i]

LEN

a

R

В R хранится длина вектора Е

CIN

a

Ввод из потока значения а

COUT

a

Вывод в поток значения переменной а

{

Начало блока

}

Конец блока

cin

ch

Считывание в память

cout

ch

Вывод на экран

goto

L

Безусловный переход на метку

#10

Возврат каретки

#13

Переход на следующую строку