Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик по ТЯП.DOC
Скачиваний:
10
Добавлен:
01.05.2014
Размер:
240.13 Кб
Скачать

Подграмматика для переменных:

Нетерминалы:

VAR

переменная

VO

переменная старого типа

VO`

остаток переменной старого типа

IT

имя типа

I

индекс

I`

остаток индекса

EAR

арифметическая переменная

IP

имя поля

VAR ® ( IT ) VO

VAR ® VO

VO ® id VO`

VO` ® [ I I` ] VO`

VO` ® . IP VO`

VO` ® e

I ® EAR

I` ® , I I`

I` ® e

IP ® id

Подграмматика для операторов:

Нетерминалы:

OP

оператор

OPN

непомеченный оператор

VAR

переменная

E

выражение

DAT

данные для вывода

OPS

последовательность операторов

OPS`

остаток последовательности операторов

ELS

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

OP ® lbl : OPN

OP ® OPN

OPN ® rid ( VAR )

OPN ® wri ( DAT )

OPN ® beg OPS end

OPN ® got lbl

OPN ® if E the OP ELS

OPN ® whi E do OP

OPN ® VAR := E

OPN ® e

DAT ® str

DAT ® VAR

OPS ® OP OPS`

OPS` ® ; OP OPS`

OPS` ® e

ELS ® els OP

ELS ® e

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

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

IF выражение THEN оператор1 ELSE оператор2

Указанный оператор будет переводиться следующим образом:

IF !выражение THEN

GOTO m1

оператор1

GOTO m2

m1:

оператор2

m2:

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

WHILE выражение DO оператор

Указанный оператор будет переводиться следующим образом:

m1:

IF !выражение THEN

GOTO m2

оператор

GOTO m1

m2:

Список триад:

Label А, _

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

Print А, _

Вывести на экран значение из таблицы идентификаторов по адресу А.

Input А, _

В таблицу идентификаторов по адресу А заносится значение, введенное с клавиатуры.

:= A1, A2

Переменной по адресу A1 в таблице идентификаторов присваивается значение по адресу A2 из таблицы промежуточных значений.

Аномальная ситуация: если типы А1 и А2 не совпадают.

Jmp А, _

Управление передается триаде по адресу А.

JmpF A1, A2

Если значение в таблице по адресу А1 равно «ложь»,

то управление передается триаде по адресу А2.

Аномальная ситуация: если тип А1 - не boolean.

Ntype A1, A2

Преобразовать тип значения по адресу A2 в тип А1

(см. соответствующую таблицу, стр. 7).

EM A1, A2

Элемент массива A1 с индексом A2.

PZ A1, A2

Поле A2 записи A1.

==I A1, A2

Операции отношения «равно»

==R A1, A2

соответственно для целых, вещественных, комплексных

==C A1, A2

и булевских значений по адресам A1, A2

==B A1, A2

<I A1, A2

Операции отношения «меньше»

<R A1, A2

соответственно для целых, вещественных, комплексных

<C A1, A2

и булевских значений по адресам A1, A2

<B A1, A2

>I A1, A2

Операции отношения «больше»

>R A1, A2

соответственно для целых, вещественных, комплексных

>C A1, A2

и булевских значений по адресам A1, A2

>B A1, A2

negI A1, A2

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

negR A1, A2

соответственно для целых, вещественных и комплексных

negC A1, A2

значений по адресам A1, A2

addI A1, A2

Операции сложения

addR A1, A2

соответственно для целых, вещественных и комплексных

addC A1, A2

значений по адресам A1, A2

subI A1, A2

Операции вычитания

subR A1, A2

соответственно для целых, вещественных и комплексных

subC A1, A2

значений по адресам A1, A2

mulI A1, A2

Операции умножения

mulR A1, A2

соответственно для целых, вещественных и комплексных

mulC A1, A2

значений по адресам A1, A2

divI A1, A2

Операции деления

divR A1, A2

соответственно для целых, вещественных и комплексных

divC A1, A2

значений по адресам A1, A2

Соседние файлы в предмете Теория языков программирования