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

UptoLike

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

21
2) gcпроцедура считывания очередного символа исходной строки в пе-
ременную СH;
3)
Err - процедура обработки ошибок, возвращающая по коду соответст-
вующее сообщение об ошибке.
С учетом введенных обозначений, процедуры синтаксического разбора
будут иметь вид.
procedure S;
begin
A; B;
if CH<>′⊥′ then ERR
end;
procedure A;
begin
if CH=
a
then gc
else if CH=c
then begin
gc; A
end
else Err
end;
procedure B;
begin
if CH= b then
begin
gc; B
end
else Err
end;
Теорема 2.1. Достаточные условия применимости метода рекурсивного
спуска
Метод рекурсивного спуска применим к грамматике, если правила выво-
да грамматики имеют один из следующих видов:
1) A
α
, где
α
(TN)
*
, и это единственное правило вывода для этого не-
терминала;
2) Aa
1
α
1
| a
2
α
2
|…| a
n
α
n
, где a
i
T для каждого i=1, 2,…, n; a
i
a
j
для i
j,
α
i
(TN)
*
, т.е. если для нетерминала А несколько правил вывода, то они долж-
ны начинаться с терминалов, причем эти терминалы должны быть различными.
Данные требования являются достаточными, но не являются необходи-
мыми. Можно применить эквивалентные преобразования КС-грамматик, кото-
рые способствуют приведению грамматики к требуемому виду, но не гаранти-
руют его достижения (см. лабораторную работу 4) /11/.
     2) gc – процедура считывания очередного символа исходной строки в пе-
        ременную СH;
     3) Err - процедура обработки ошибок, возвращающая по коду соответст-
вующее сообщение об ошибке.
     С учетом введенных обозначений, процедуры синтаксического разбора
будут иметь вид.
      procedure S;
      begin
         A; B;
         if CH<>′⊥′ then ERR
      end;
      procedure A;
      begin
         if CH=′a′ then gc
         else if CH=′c′
             then begin
                      gc; A
                  end
             else Err
      end;

      procedure B;
      begin
         if CH= ′b′ then
             begin
                gc; B
             end
         else Err
      end;

  Теорема 2.1. Достаточные условия применимости метода рекурсивного
                                спуска
      Метод рекурсивного спуска применим к грамматике, если правила выво-
да грамматики имеют один из следующих видов:
      1) A→α, где α∈(T∪N)*, и это единственное правило вывода для этого не-
терминала;
      2) A→a1α1 | a2α2 |…| anαn, где ai ∈T для каждого i=1, 2,…, n; ai≠aj для i≠j,
αi∈(T∪N)*, т.е. если для нетерминала А несколько правил вывода, то они долж-
ны начинаться с терминалов, причем эти терминалы должны быть различными.
      Данные требования являются достаточными, но не являются необходи-
мыми. Можно применить эквивалентные преобразования КС-грамматик, кото-
рые способствуют приведению грамматики к требуемому виду, но не гаранти-
руют его достижения (см. лабораторную работу № 4) /11/.
                                                                               21