Подграмматика переменной
|
IDENT |
CF |
CI |
[ |
, |
] |
; |
AssignRel |
ε |
VAR |
IDENTr name <- адрес IDENT type<- код типа вектор eql<- r-значение из таблицы идентификаторов , 1 |
CI, 10 |
|
[ ELEMp SELEMq] name <- 10 type<- код типа вектор eql<- r-значение из таблицы идентификаторов , 2 |
|
|
|
|
|
ELEM |
IDENTr SENDind,n,e , 5 |
CF t , 8 |
|
|
|
|
|
|
|
SEND |
|
|
[ CI ] {SUBS name, ind, e} ,6 |
|
ε,7 |
|
|
|
|
SELEM |
|
|
|
|
ELEMp SELEMq , 3 |
ε,4 |
|
|
ε,4 |
IDENT |
Выброс |
|
|
|
|
|
|
|
|
CF |
|
|
|
|
|
|
|
|
|
CI |
|
|
Выброс |
|
|
|
|
|
|
[ |
|
|
|
Выброс |
|
|
|
|
|
, |
|
|
|
|
Выброс |
|
|
|
|
] |
|
|
|
|
|
Выброс |
|
|
|
{SUBS} name, ind, e |
ВЫДАЧА{SUBS} name, ind, e |
||||||||
┴ |
|
|
|
|
|
|
|
|
cвертка, 71 |
VARname,type,eql → IDENTr (1)
name <- адрес IDENT
type<- код типа вектор
eql<- r-значение из таблицы идентификаторов
VAR name,type,eql → [ ELEMp SELEMq] (2)
name <- 10 //это будет безымянная запись в таблице идентификаторов
type<- код типа вектор
eql<- r-значение из таблицы идентификаторов
SELEMp → ELEMp SELEMq (3)
SELEMp → (4)
p<-10
ELEMe → IDENTr SENDind,n,e (5)
n<-r
SEND ind,n,e → [ CI ] {SUBS name, ind, e} (6)
ind <- CI
e<- GetNew
SEND ind,n,e → (7)
ind <- 10
n<-10
e<-10
ELEM i → CF t (8)
i<-t //адрес CF
VAR name,type,eql →CI t (9)
name<-10
type<- код для int
eql<-t //адрес CI
Подграмматика типов
|
int |
float |
bool |
IDENT |
vector |
[ |
] |
CI |
ε |
DECVAR |
BASEp VARname {AddVar}q,r , 1 |
BASEp VARname {AddVar}q,r
, 1 |
BASEp VARname {AddVar}q,r
, 1 |
|
|
|
|
|
|
BASE |
intv , 2 |
floatv , 3 |
boolv , 4 |
|
|
|
|
|
|
VAR |
|
|
|
VAR ┴, 61 |
|
|
|
|
|
DECVEC |
|
|
|
ε, 75 |
DECVEC -> vector VARname [ CI t] {AddVec}q,p,d ; DECVEC , 5 |
|
|
|
|
DIM |
|
|
|
|
|
|
|
CI,7 |
|
[ |
|
|
|
|
|
Выброс |
|
|
|
] |
|
|
|
|
|
|
Выброс |
|
|
CI |
|
|
|
|
|
|
|
Выброс |
|
IDENT |
|
|
|
Выброс |
|
|
|
|
|
{AddVar}q,r |
ВЫДАЧА{AddVar}q,r |
||||||||
{AddVec}q,p,d |
ВЫДАЧА{AddVec}q,p,d |
||||||||
┴ |
|
|
|
|
|
|
|
|
cвертка,75 |
DECVAR, -> BASEp VARname {AddVar}q,r (1)
q <- p
r <- name
BASEp -> intv (2)
p <- v
BASEp -> floatv (3)
p <- v
BASEp -> boolv (4)
p <- v
DECVEC -> vector VARname [ CI t] {AddVec}q,p,d ; DECVEC (5)
r <- vector
p <- name
d <- t
|
Void main(){ |
int |
float |
bool |
vector |
EXP-буква или скобка( |
} |
ε |
P |
void main() { DVAR } |
|
|
|
|
|
|
|
DVAR |
|
DECVAR ;DVAR , 2 |
DECVAR ;DVAR , 2 |
DECVAR ;DVAR , 2 |
DVEC, 3 |
COP,4 |
|
|
DECVAR |
|
DECVAR┴, 65 |
DECVAR┴, 65 |
DECVAR┴, 65 |
|
|
|
|
DVEC |
|
|
|
|
DEVEC; DVEC, 5 |
COP,6 |
|
ε,7 |
DECVEC |
|
|
|
|
DECVEC┴, 65 |
|
|
|
COP |
|
|
|
|
|
COP┴, 64 |
|
|
void main(){ |
ВЫБРОС |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
ВЫБРОС |
|
┴ |
|
|
|
|
|
|
|
ДОПУСК |
