Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ТЯП. / Управляющие таблицы атрибутных ДМП.doc
Скачиваний:
11
Добавлен:
01.05.2014
Размер:
373.76 Кб
Скачать

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

EXP

LEX

LABEL

VAR

IDENT

for

goto

if

else

cin>>

cout<<

=

+=

-=

*=

/=

(

)

;

ε

COP

SOP,1

SOP

OP;SOP,2

OP;SOP,2

OP;SOP,2

OP;SOP,2

OP;SOP,2

OP;SOP,2

OP;SOP,2

OP;SOP,2

ε,3

OP

LABELq: ULO,4

ULO, 22

ULO, 22

ULO, 22

ULO, 22

ULO, 22

ULO, 22

ULO, 22

ULO, 22

ULO

EQO, 6

for(EQOname; LEXend; EQOstep) {begin_cycle} m1, m2, p1, p2, p3, p4 COP {end_cycle}p1, p2, p3, p4 , 5

goto

LABEL,8

if(LEX)COP ELO,10

cin>>VAR p {CIN} m, 15

cout<<VAR p {COUT} m , 16

(LEX)?

(EXP): EXP),20

ELO

else

COP,11

EQO

VAR EQRS, 7

EQRS

= EXP p,17

+= EXP p,18

-= EXP p,19

*=EXP p p,20

/=EXP p p,21

EXP

LEX

LEX┴, 63

VAR

VAR┴,61

EXP

EXP┴, 62

LABEL

LABELq → IDENTp {DEFLq, , }q ,9

IDENT

ВЫЗОВ

cin>>

ВЫБРОС

cout<<

ВЫБРОС

=

ВЫБРОС

+=

ВЫБРОС

-=

ВЫБРОС

*=

ВЫБРОС

/=

ВЫБРОС

(

ВЫБРОС

)

ВЫБРОС

?

;

выброс

{CIN} m

ВЫДАЧА{CIN} m

{COUT} m

ВЫДАЧА{COUT} m

{begin_cycle} m1, m2, p1, p2, p3, p4

ВЫДАЧА{begin_cycle} m1, m2, p1, p2, p3, p4

{end_cycle}p1, p2, p3, p4

ВЫДАЧА{end_cycle}p1, p2, p3, p4

{DEFLq, , }q

ВЫДАЧА{DEFLq, , }q

СВЁРТКА,74

COP → SOP (1)

SOP → OP; SOP (2)

SOP → (3)

OP → LABELq: ULO (4)

OP → ULO

ULO →for(EQOname; LEXend; EQOstep) {begin_cycle} m1, m2, p1, p2, p3, p4 COP {end_cycle}p1, p2, p3, p4 (5)

m1 <- NewLabel

m2 <- NewLabel

p1 <- name

p2 <- begin

p3 <- step

p4 <- end

ULO → EQO (6)

EQO →VAR q EQRS t,e {ASS}p1, p2, p3t (7)

p2 <- q //адрес переменной в таблице

p1<-t

p3 <-e

ULO → goto LABEL p {BRL} q (8)

p <- q //адрес

LABELq → IDENTp {DEFLq, , }q (9)

q <- p

ULO → IF2p OP{DEFL}m (10)

mp

IF2p → if (LEXvalue) {BF}m, v (11)

m NewLabel

p m

vvalue

ULO → IF2p COP IF3q1, q2 COP {DEFL}m (12)

mq1

q2p

IF3q1, q2 → else{BRL}m1{DEFL}m2 (13)

m1 NewLabel

q1 m1

m2q2

OP -> (14)

ULO → cin>>VAR p {CIN} m (15)

p <- m

ULO →cout <<VAR p {COUT} m (16)

m <- p

EQRS t,e → =EXP p (17)

t <- код для операции =

e <- p

EQRS t,e → +=EXP p (18)

t <- код для операции +=

e <- p

EQRS t,e → -=EXP p (19)

t <- код для операции -=

e <- p

EQRS t,e → *=EXP p (20)

t <- код для операции *=

e <- p

EQRS t,e → /=EXP p (21)

t <- код для операции .=

e <- p