Методические указания к лабораторным работам по курсу "Теория вычислительных процессов и структур". Домашова Д.В - 17 стр.

UptoLike

Как только при считывании лексем встречается ":",то
записанные в стек номера выводятся и по ним в таблице
идентификаторов проставляется в поле "описан" 1 (к этому моменту
там должен быть 0). Если очередная лексема есть "int" или "bool",
то попутно в таблице идентификторов поле "тип" заполняется
соответствующим типом.
П е р е м е н н ы е:
LEXO лексема; {лексема -двумерные числовые массивы
LEX очередная лексема (п,к)}
П р о ц е д у р ы:
QL LEXO: = LEX; LEX:= очередная лексема;
inst(l) запись в стек числа 1;
outst(l) вывод из стека числа 1;
instl inst (LEXO[2]);
dec(t) вывод всех чисел из стека; вызов decid (1,t);
decid(l,t) проверка и заполнение поля "описан" и заполнение
поля "тип" в таблице идентификаторов для лексемы
с номером l и типа t.
procedure decid (1:..; t:...);
begin if TI [1].descrid =1 then ERR (decl)
else begin
TI[l].descrid : = 1;
TI[l].typid := t
end;
procedure dec(t: ...);
begin outst (e);
while l<>0 do
begin decid (1,t);
outst (1)
end
end;
Правило Д принимает вид:
Д::=inst(0)>I<<innstl>{,I<instl>}:[int<dee(int)>,bool<dee(bool)>]
procedure D;
begin inst(0);I;instl;
while EQ(`,`)do begin Gl;I;instl end;
if EQ(`:`) then Gl else ERR(dsl);
if EQ(`int`)then begin GL; dec `int` end
else if EQ (`bool`) then begin GL; dec (bool) end
else ERR(ds2)
end;
20
       Как только при считывании лексем встречается ":",то
записанные в стек номера               выводятся и по ним в таблице
идентификаторов проставляется в поле "описан" 1 (к этому моменту
там должен быть 0). Если очередная лексема есть "int" или "bool",
то попутно в таблице идентификторов поле "тип" заполняется
соответствующим типом.
       П е р е м е н н ы е:
       LEXO лексема;             {лексема -двумерные числовые массивы
       LEX очередная лексема               (п,к)}
       П р о ц е д у р ы:
       QL LEXO: = LEX; LEX:= очередная лексема;
       inst(l) запись в стек числа 1;
       outst(l) вывод из стека числа 1;
       instl inst (LEXO[2]);
       dec(t) вывод всех чисел из стека; вызов decid (1,t);
       decid(l,t) проверка и заполнение поля "описан" и заполнение
поля "тип" в таблице идентификаторов для лексемы
       с номером l и типа t.
       procedure decid (1:..; t:...);
        begin if TI [1].descrid =1 then ERR (decl)
        else begin
                         TI[l].descrid : = 1;
                          TI[l].typid := t
                          end;
procedure dec(t: ...);
begin outst (e);
    while l<>0 do
    begin decid (1,t);
    outst (1)
       end
end;
Правило Д принимает вид:
Д::=inst(0)>I<{,I}:[int,bool]
procedure D;
begin inst(0);I;instl;
while EQ(`,`)do begin Gl;I;instl end;
if EQ(`:`) then Gl else ERR(dsl);
if EQ(`int`)then begin GL; dec `int` end
else if EQ (`bool`) then begin GL; dec (bool) end
       else ERR(ds2)
       end;



20