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

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

  4.3.4. Построение  преобразователя.    Покажем теперь, как по заданной СУ - схеме можно построить детерминированный преобразователь. В начале по заданной СУ - схеме построим транслирующую грамматику Г. Это всегда можно   сделать, поскольку заданная СУ - схема должна быть простой. Если входная грамматика заданной СУ - схемы относится к классу LL(1) -грамматик, то и входная грамматика транслирующей грамматики также должна относиться к этому классу, поскольку при построении Т - грамматики входные правила изменениям не подвергались. Учитывая, что искомый преобразователь должен в процессе формирования выхода осуществлять и распознавание входной цепочки, будем его строить по правилам транслирующей грамматики, используя правила построения распознавателя.

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

     Построение функции переходов МП      (1) Для  всех правил вида <A> --> ba,  где b О Vтвх и a О(Vтвх U Vтвых U Va)*, строим ко-

         манды:          j( s0, b,  A)=( s0, a', $ ),          где a' - зеркальное отображение цепочки a.

     (2) Для всех правил вида <A> --> <B>a, где B ОVa и a О(Vтвх U Vтвых U Va)*, строим коман-

         ды:          j*( s0, u, A ) = ( s0, aB , $ ),          где u О  ВЫБОР(<A> --> <B>aвх) и  aвх -  цепочка,  полученная  из a путем удаления из

         нее всех выходных символов.

.      (3) Для всех правил вида <A> --> $ строим команды:          j*( s0, u, A ) = ( s0, $, $ ),        где u О ВЫБОР(<A> --> $).

     (4) Для всех символов b, принадлежащих, Vтвх , стоящих на  первом месте  в  правой части правил

          транслирующей  грамматики, т.е. символов,заносимых в магазин, строим  правило:          j( s0, b, b ) = ( s0, $, $ ).      (5) Для всех выходных символов {u}, таких что  u О Vтвых U {$}, строим команды:          j*( s0, z, {u} ) = ( s0, $, {u} ),          где z О Vтвх.

         Точнее команды строятся для сочетаний {u}z, таких что z может следовать за {u} в цепочках,

        выводимых в за  данной грамматике.

     (6) Заключительное правило строим так:          j( s0, $, h0 ) = ( s0, $, $ ). Пред.Страница След.Страница Раздел Содержание  

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