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

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

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

TYPt

тип

t - синтезированный

TSMPt

простой тип

t - синтезированный

TCMPt

составной тип

t - синтезированный

TDIAt

диапазонный тип

t - синтезированный

TDIA`t,p

остаток диапазонного типа

t - синтезированный, p - унаследованный

TOPRt

определенный ранее тип

t - синтезированный

ITt

имя типа

t - синтезированный

CNSt

константа

t - синтезированный

TMASt

массивный тип

t - синтезированный

TZAPt

запись

t - синтезированный

TIt

тип индекса

t - синтезированный

TI`t,p

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

t - синтезированный, p - унаследованный

TKOMt

тип компоненты

t - синтезированный

LPp,t

список полей

t - синтезированный, p - унаследованный

LP`p,t

остаток списка полей

t - синтезированный, p - унаследованный

SECt

секция записи

t - синтезированный

LIt

список имен

t - синтезированный

LI`p,t

остаток списка имен

t - синтезированный, p - унаследованный

TYPp1 ® TSMPp1

p2¬p1

TYPp1 ® TCMPp1

p2¬p1

TSMPp2 ® intp1

p2¬p1

TSMPp2 ® reap1

p2¬p1

TSMPp2 ® comp1

p2¬p1

TSMPp2 ® boop1

p2¬p1

TSMPp2 ® TDIAp1

p2¬p1

TSMPp2 ® TOPRp1

p2¬p1

TDIAt2 ® CNSp1 TDIA`p2,t1

p2¬p1

pt¬t1

TDIA`p1,r2 ® .. CNSq1 {диапазон}p2,q2,r1

r1¬НОВЭЛТ

p2¬p1

r2¬r1

TOPRp2 ® ITp1

p2¬p1

ITp2 ® idp1

p2¬p1

TCMPp2 ® TMASp1

p2¬p1

TCMPp2 ® TZAPp1

p2¬p1

TMASr4 ® arr [ TIp1 {индекс}p2,r1 TI`r2,t1 ] of TKOMq1 {массив}t2,q2,r3

r1,r2¬НОВЭЛТ

r3,r4¬НОВЭЛТ

p2¬p1

t2¬t1

q2¬q1

t4¬t3

TI`p1,t2 ® , TIq1 {индексы}p2,p1,r1 TI`r2,t1

r1,r2¬НОВЭЛТ

p2¬p1

t2¬t1

TI`p2,p1 ® e

p2¬p1

TIp2 ® TSMPp1

p2¬p1

TKOMp2 ® ITp1

p2¬p1

TZAPr4 ® rec {пустое_поле}r1 LPr2,p1 end {запись}p2,r3

r1,r2¬НОВЭЛТ

r3,r4¬НОВЭЛТ

p2¬p1

LPp1,t2 ® SECq1 {список_полей}p2,q2,r1 LP`r2,t1

r1,r2¬НОВЭЛТ

p2¬p1

q2¬q1

t2¬t1

LPp1,p2 ® e

p2¬p1

LP`p1,t2 ® ; SECq1 {список_полей}p2,q2,r1 LP`r2,t1

r1,r2¬НОВЭЛТ

p2¬p1

q2¬q1

t2¬t1

LP`p1,p2 ® e

p2¬p1

SECr2 ® LIp1 : TYPq1 {поля}p2,q2,r1

r1,r2¬НОВЭЛТ

p2¬p1

q2¬q1

LIr4 ® idp1 LI`r1,t1 {список_имен}p2,t2,r3

r1,r2¬НОВЭЛТ

r3,r4¬НОВЭЛТ

p2¬p1

t2¬t1

LI`q1,q3 ® , idp1 LI`r1,t1 {список_имен}p2,t2,q2

r1,r2¬НОВЭЛТ

p2¬p1

t2¬t1

q2,q3¬q1

LI`p1,p3 ® {пустой_список_имен}p2

p2,p3¬r1

НОВЭЛТ - процедура, которая выдает значение указателя на свободную позицию таблицы, используемой для запоминания результата.

Операционные символы:

{диапазон}A1,A2,R

Создать диапазонный тип и записать значение в таблицу промежуточных результатов по адресу R.

Значения по адресам A1 и А2, задающие границы диапазона, должны быть типа integer.

{индекс}A,R

Записать в переменную по адресу R индексы А массива.

{индексы}A1,A2,R

Записать в переменную по адресу R индексы, содержащиеся в A1 и А2.

{массив}A1,А2,R

Записать в переменную по адресу R новый тип, представляющий собой массив с индексами А1 из элементов типа А2.

{пустое_поле}R

Записать в таблицу по адресу R информацию, что поле пусто.

{список_полей}A1,А2,R

Записать в таблицу по адресу R информацию о полях записи, содержащихся в А1 и А2.

{поля}A1,А2,R

Записать в таблицу по адресу R информацию о поле записи, где А1 - список имен, А2 - тип полей.

{запись}A,R

Записать в переменную по адресу R новый тип, представляющий собой запись с полями А.

{список_имен}А1,А2,R

Записать в таблицу по адресу R список имен из А1 и из А2.

{пустой_список_имен}R

Записать в таблицу по адресу R пустой список имен.

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