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

12. Грамматика операторов цикла, условного оператора и оператора безусловного перехода

Входные символы

Имя

Семантика

OManager

Общее название операторов условия, цикла и безусловного перехода

OGo

Оператор безусловного перехода

OIf

Оператор условия

OWh

Оператор цикла

CO

Составной оператор

MnO

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

L

Метка

Condition

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

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

Имя символа

Семантика

Атрибуты

{ВЫЗОВ L}a, {ВЫЗОВV}a, {ВЫЗОВCondition}a

Вызовы соответствующих ДМП-процессоров. Результаты их работы запоминаются как атрибут a

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

{БП} p2

Безусловный переход. Генерируется триадаBRLp.

p – синтезированный

{УПЛ}l, f

Переход по условию f=false. Если типfнеboolean– ошибка.l– адрес метки в таблице меток. Генерируется триадаBF l f

f – унаследованный,l -синтезированный

{МЕТКА}k

В таблицу меток по адресу kзаносится адрес триады, следуюшей за этой меткой

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

Правила

OManager -> OGo

OManager -> OIf

OManager -> OWh

OGo -> goto L {ВЫЗОВ L}p1 {БП}p2

p1 <- p2

OIf -> if Condition {ВЫЗОВ Condition}b then {УПЛ}l, f O {ВЫЗОВ О} {БП}m else {МЕТКА}k1 O {ВЫЗОВ О} {МЕТКА}k2

f<-b

l,m<- НоваяМетка

k1 <-l

k2 <- m

OIf -> if Condition {ВЫЗОВ Condition}b then {УПЛ}l, f O {ВЫЗОВ О} {БП}m else {МЕТКА}k1 CO {МЕТКА}k2

f<-b

l,m<- НоваяМетка

k1 <- l

k2 <- m

OIf -> if Condition {ВЫЗОВ Condition}b then {УПЛ}l, f CO {БП}m else {МЕТКА}k1 CO {МЕТКА}k2

f<-b

l,m<- НоваяМетка

k1 <-l

k2 <-m

OIf->ifCondition{ВЫЗОВCondition}bthen{УПЛ}l, f CO{БП}melse{МЕТКА}k1O{ВЫЗОВ О}{МЕТКА}k2

f<-b

l,m<- НоваяМетка

k1 <-l

k2 <-m

OIf->ifCondition{ВЫЗОВCondition}bthen{УПЛ}l , fO{ВЫЗОВ О} {МЕТКА}k

f<-b

l<- НоваяМетка

k <- l

OIf -> if Condition {ВЫЗОВ Condition}b then {УПЛ } l , f CO {МЕТКА}k

f<-b

l<-НоваяМетка

k <- l

OWh -> while{МЕТКА}k1 Condition {ВЫЗОВ Condition}b do {УПЛ}l, f O {ВЫЗОВ О} {БП}m {МЕТКА}k2

k1 <- НоваяМетка

f<-b

l <- НоваяМетка

m <- k1

k2 <- l

OWh -> while {МЕТКА}k1 Condition {ВЫЗОВ Condition}b do {УПЛ}l, f CO {БП}m {МЕТКА}k2

k1 <- НоваяМетка

f<-b

l<- НоваяМетка

m <- k1

k2 <- l

CO -> begin MnO end

CO -> begin end

MnO -> O {ВЫЗОВ О}

MnO -> MnO ; O {ВЫЗОВ О}