Разработка компиляторов. Ишакова Е.Н. - 23 стр.

UptoLike

Составители: 

23
B;
if not EQ(‘.’) then ERR
end;
2) для правила D1 var D{;D}
procedure D1;
begin
if EQ(‘var’) then gl else ERR;
D;
while EQ(‘;’) do
begin
gl; D
end
end;
3) для правила D I{,I}:(int | bool)
procedure D;
begin
I;
while EQ(‘,’) do
begin
gl; I
end;
if EQ(‘:’) then gl else ERR;
if EQ(‘int’) or EQ(‘bool’) then gl else ERR
end;
4) для правила F I|N|L|¬ F|(E)
procedure F;
begin
if ID or NUM or EQ(‘true’) or EQ(‘false’) then gl
else
if EQ(‘¬’)
then begin
gl; F
end
else
if EQ(‘(‘)
then begin
gl; E;
if EQ(‘)’) then gl else ERR
end
else ERR
end;
Аналогично составляются оставшиеся процедуры.
   B;
   if not EQ(‘.’) then ERR
end;
2) для правила D1→ var D{;D}
procedure D1;
begin
    if EQ(‘var’) then gl else ERR;
    D;
    while EQ(‘;’) do
        begin
           gl; D
        end
end;
3) для правила D→ I{,I}:(int | bool)
procedure D;
begin
    I;
    while EQ(‘,’) do
        begin
           gl; I
        end;
    if EQ(‘:’) then gl else ERR;
    if EQ(‘int’) or EQ(‘bool’) then gl else ERR
end;
4) для правила F→ I|N|L|¬ F|(E)
procedure F;
begin
    if ID or NUM or EQ(‘true’) or EQ(‘false’) then gl
      else
         if EQ(‘¬’)
             then begin
                     gl; F
                   end
             else
               if EQ(‘(‘)
                   then begin
                            gl; E;
                            if EQ(‘)’) then gl else ERR
                         end
                   else ERR
end;
Аналогично составляются оставшиеся процедуры.

                                                          23