Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Построение автомата с магазинной памятью по q-грамматике




 

Контекстно-свободная грамматика называется q-грамматикой тогда и только тогда, когда выполняются два условия:

1. Правая часть каждого правила либо представляет собой пустую цепочку e, либо начинается с терминального символа.

2. Множество выбора правил с одной и той же левой частью не пересекаются.

 

Второе условие следует рассмотреть подробнее, так как необходимо ввести ряд определений. Одно из них – множество выбора. Для демонстрации определений будем использовать пример q-грамматики G9.4(S):

1. SaAS

2. Sb

3. AcAS

4. Ae

 

О том, что это не S-грамматика говорит правая часть правила 4, которая не начинается с терминального символа. Однако, метод построения НАМП, изложенный для S-грамматики почти подходит и здесь.

 

Множество терминалов, следующих за данным нетерминалом X (Обозначим через СЛЕД(X)) – множество терминальных символов, которые могут следовать непосредственно за Х в какой-либо промежуточной цепочке, выводимой из S┤, включая и .

Это множество символов называется также множеством следуемых за Х терминалов. Для приведенной грамматики можно определить следующие множества:

 

 

СЛЕД (А) = { a, b }

СЛЕД (S) = { a, b }

 

Терминалы, следующие за A, определяются исходя из того, что за A следует всегда нетерминал S, правая часть правила для которого начинается либо с a, либо с b. Терминалы, следующие за S, выводятся путем подстановки в правило 1 правила 3, которая показывает, что за S всегда следует S, начинающаяся либо с a, либо с b:

 

S Þ aAS Þ acASS.

 

Данное понятие используется для того, чтобы показать, когда следует применять правило с пустой правой частью Ae. Если входной символ Ti Ï { a, b }, то есть, является символом c или , a на вершине магазина А, то бесполезно применять Ae. Если это правило будет применено, то А удаляется из стека, а так как за А символы c или следовать не могут, то в результате процесс останавливается. Представим, что у нас уже есть автомат, соответствующий грамматике G9.4, и очень похожий на АМП, распознающий S-грамматику. Тогда, применительно к цепочке аасbb, можно получить несколько решений. В начале рассмотрим стратегию, при которой в первую очередь применяется всегда пустое правило.

 

Номер шага Содержимое стека Остаток входной цепочки Номер применяемого правила Комментарий
  Ñ S aacbb┤    
  Ñ SA acbb┤   Иначе, процесс разбора дальше не пойдет
  Ñ S acbb┤    
  Ñ SA cbb┤   А здесь данный шаг ведет к отказу по отношению к правильной цепочке
  Ñ S cbb┤ Отвергнуть Придется осуществлять возврат

 

Правильным было бы применение на шаге 4 правила 3, в соответствии с ранее рассмотренными рекомендациями о месте и времени применения пустого правила.

 

Номер шага Содержимое стека Остаток входной цепочки Номер применяемого правила Комментарий
  Ñ S aacbb┤    
  Ñ SA acbb┤   Иначе, процесс разбора дальше не пойдет
  Ñ S acbb┤    
  Ñ SA cbb┤   Пойдем в соответствии с предложенными рекомендациями
  Ñ SSA bb┤   Иначе, процесс разбора дальше не пойдет
  Ñ SS bb┤    
  Ñ S b┤    
  Ñ Допустить  

 

Таким способом решается одна из задач детерминированного разбора, связанная с особенностями применения пустого правила. Однако, при разборе, построенном на основе q-грамматики возможна и такая ситуация, когда:

 

A, Ae и b Î СЛЕД (A).

 

В этом случае стоит проблема выбора одного из правил с одинаковыми левыми частями. Для ее решения введем понятие множества выбора для данного правила.

 

Если правило грамматики имеет вид: A, где b – терминал, а α – цепочка терминалов и нетерминалов, то определим множество выбора для правила A равным b. Обозначим данную запись следующим образом:

ВЫБОР (A) = b.

 

Если правило имеет вид: Ae, то определим:

 

ВЫБОР (Ae) = СЛЕД (A).

 

Если p – номер правила, то будем также писать «ВЫБОР (p)» вместо «ВЫБОР (правило

 

ВЫБОР (p) – множество выбора правила p.

 

Проиллюстрируем построение множества выбора на примере грамматики G9.4.

 

ВЫБОР (1) = ВЫБОР (SaAS) = { a }

ВЫБОР (2) = ВЫБОР (Sb) = { b }

ВЫБОР (3) = ВЫБОР (AcAS) = { c }

ВЫБОР (4) = ВЫБОР (Ae) = СЛЕД (A) = { a, b }

 

В соответствии с определением, рассмотренным в начале, имеем q-грамматику, так как:

 

ВЫБОР (1) È ВЫБОР (2) = Æ,

ВЫБОР (3) È ВЫБОР (4) = Æ.

 





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 1213 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

2376 - | 2051 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.