Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Формальные языки и грамматики.doc
Скачиваний:
161
Добавлен:
01.05.2014
Размер:
1.51 Mб
Скачать

3.15. Резюме.

     Каждую цепочку,  построенную с помощью правого вывода, можно преобразовать в начальный символ грамматики,  последовательно заменяя правые части правил,  выделенные в цепочки, левыми частями. Такая операция замены,  являющаяся обратной по отношению к операции вывода,  называется сворачиванием  или  сверткой.  Восходящий распознаватель работает,  последовательно выполняя операции переноса и свертки.  Вначале он переносит символы входной  цепочки  в магазин  до  тех пор,  пока в магазине не образуется правая часть какого-либо правила,  а затем он  выполняет  операцию  сворачивания.Формальной моделью восходящего распознавателя является расширенный автомат,  допускающий, в отличие от простого автомата, при переходе чтение цепочки, находящейся в вершине магазина.      Детерминированные восходящие распознаватели могут быть построены для LR(k) грамматик, которые являются подклассом контекстно-свободных грамматик.  Процедура построения LR(k)-распознавателя оказывается весьма сложной и трудоемкой,  поэтому в настоящем пособии рассматриваются грамматики LR(0) и SLR(1),  которые включаются в подкласс LR(1) грамматик.  Подкласс грамматик SLR(1) грамматик является достаточно широким. Кроме грамматик LR(0) он включает грамматики LL(1) и грамматики слабого предшествования. Диаграмма включения подклассов LR(1) грамматики приведена на рис.3.1. Принадлежность к  подклассу LR(0) или SLR(1) грамматик устанавливается путем проверки возможности построения соответствующего распознавателя.  Процедура построения восходящих распознавателей состоит из двух частей:  построение таблицы переходов и построение таблицы действий.  Первая часть этой процедуры оказывается одинаковой для преобразователей LR(0) и SLR(1).  Отличия в процедуре построения проявляются во второй части.

                                                                         LR(1)                                                                             |                                                                             |                                              ------------------SLR(1)----------------                                             |                                |                              |                                             |                                |                              |                                          LR(0)                   со слабым                    LL(1)                                                                 предшествованием

                                                                     Рис. 3.1    

4.3. Магазинные Преобразователи.

Магазинные автоматы, рассмотренные в предыдущем разделе, позволяют определить для цепочки, заданной на входе, ее принадлежность к языку, допускаемому автоматом. Настоящий раздел посвящен другому типу моделей устройств, называемому  магазинными преобразователями. Подобные устройства  позваляют строить по заданной входной цепочки соответствующую ей выходную цепочку. Множество таких пар цепочек называют переводом или трансляцией, допускаемым  магазинным преобразователем. Для того чтобы построить преобразователь необходимо заранее знать какой перевод он должен выполнять. Кроме того, преобразователь можно построить не для любого перевода, а только для такого, который может быть описан с помощью простой СУ-схемы.  Для построения детерминированного преобразователя необходимо еще, чтобы входная грамматика заданной СУ-схемы пораждала детерминированный язык.

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