Скачиваний:
5
Добавлен:
01.05.2014
Размер:
22.72 Кб
Скачать

Part437 Пред.СтраницаСлед.СтраницаРаздел Содержание

  4.3.7  Построение восходящих преобразователей. Построение восходящих преобразователей,  так же как в  рассмотренном выше случае, выполняется на основе распознавателя путем модификации команд за счет выполнения операции передачи  выходных символов.  Одно из отличий построения восходящих преобразователей заключается в том, что для их построения должна быть использована транслирующая грамматика в постфиксной форме.

    Определение. Транслирующая грамматика,  записанная в  форме, когда  все символы действия в правых частях расположены  правее всех терминальных и  нетерминальных  символов, называется  постфиксной  транслирующей грамматикой.       Это определение  говорит  о  том,  что  правила  постфиксной транслирующей грамматики должны иметь вид:      <A> ®a{ z }, где  a О( VT  И  VА) *  и z О VTвых .

     Любая транслирующая грамматика может  быть  преобразована  в постфиксную  форму путем разбиения правил грамматики и добавления новых нетерминальных символов.  Например, для преобразования правила      <A>  ® a{ z }<B>{ w }, введем дополнительный нетерминал   и разобьем исходное правило на две части. В результате получаем правило в постфиксной форме:      <D> ® a{ z },

     <A>  ® <D><B>{w}.      Воспользуемся этим  приемом для преобразования к постфиксной форме транслирующей  грамматики,  которая  задает  преобразование арифметических выражений без скобок, описываемых грамматикой Г 4.3, в постфиксную форму. Г 4.3 : <I> ® a{a}<R>,

           <R> ® +a{a}{+}<R>,

           <R>®-a{a}{-}<R>,

           <R>® $.      Добавляем три новых нетерминала <P>,  <Q>,  <S> и,  разбивая правила грамматики, получаем грамматику в постфиксной форме.                                       Г4.4 :      <I> ® <S><R>,

                                                          <S>  ® a{a},

                                                           <R>  ® <P><R>,

                                                           <P>  ® +a{a}{+},

                                                          <R>  ® <Q><R>,

                                                          <Q>  ® -a{a}{-},

                                                           <R>  ® $. Напомним, что при построении восходящих распознавателей  обработка каждого правила A

<A> ® ax с номером k с символом x, занимающим самую правую позицию в правой части правила, связывалась операция  Свертка(k).  В  постфиксной транслирующей грамматике самую правую позицию могут занимать символы действия, поэтому при построении восходящего преобразователя эти символы можно объединить с операцией свертки в одну  операцию,  которую  назовем

Свертка  - Действие(k) (СД(k)). Учитывая, что все символы действия постфиксной транслирующей грамматики могут быть объединены  с  операциями свертки, приходим к заключению, что процедура построения восходящего распознавателя может быть применена для построения  восходящего преобразователя при условии, что вместо операции Cвертка (k) будет использоваться операция Свертка -  Действие(k)  для  правил построения постфиксной транслирующей грамматики,  содержащая символы действия.

В  качестве  иллюстрации  последнего  утверждения рассмотрим построение преобразователя для грамматики Г 4. 3. Выполняя последовательно шаги процедуры построения SLR(1) преобразова-

теля  для грамматики с аннулирующими правилами и заменяя операции Свертка(k) для правил 2, 4 и 6 операциями Свертка  -  Действие(k), получаем  таблицы переходов и действий искомого преобразователя в следующем виде.

                                                                                                              Таблица 4.1     I   S   R   P   Q   +   -    a   I0                   S     R1   P   Q   +   -    R1                  a2                   P      R3   P   Q   +   -    R3                   +                a4  a4                   Q      R5   P   Q   +   -    R5                   -                a6  a6                   h0  I0   S            a2                                      Таблица 4.2    +    -    a   |--   I0         D    S   П    П     c7    R1        c1  c1  CD2  CD2   CD2    P   П    П      c7    R3         c3    +        П     a4  CD4  CD4    CD4    Q    П    П      c7   R5         c5    -        П     a6  CD6    CD6  CD6   a4        П  

        В качестве демонстрации работы преобразователя построим последовательность конфигураций для входной цепочки а + а - а|--, дополнив эту последовательность указателем выполняемого действия.

         Вход            Магазин         Действие        Выход        1. а + а - а|--     h0                      П            -

               2.  + а - а|--       h0 a2                 СД2                 a

                3. + а - а|--        h0 S                   П                     a

              4.  а - а|--          h0 S +              П                     a

                  5.  - а|--             h0 S + a4         СД4                aa +

                 6. - а|--              h0 S P              П                    aa +

                7.  а|--               h0 S P-            П                   aa +

                      8.   |--                h0 S P - a6      СД6              aa + a -

                      9.   |--                h0 S P Q       С7                  aa + a -

                    10.  |--                h0 S P Q R5       С5             aa + a -

                   11.  |--                h0 S PR3            С3            aa + a -

                    12.  |--                h0 S R1             С1             aa + a -

                    13.  |--                h0  I0                  Д                    aa + a -

    Приведенная последовательность конфигураций показывает,  что выходная цепочка формируется при выполнении операций СД2,  СД4  и СД6 соответственно на 2, 5 и 8 шаге.

Пред.Страница След.Страница Раздел  Содержание

Соседние файлы в папке Формальные языки, грамматики и автоматы