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

Алгоритм 4. Устранение цепных правил

Читайте также:
  1. I. Общие методические приемы и правила.
  2. II. Алгоритмы манипуляций и инфекционная безопасность
  3. II. Правила заключения договоров и оформления
  4. II. Специальные методические приемы и правила.
  5. II. Устранение гемоторакса
  6. IV. Общие правила ведения взрывных работ
  7. IV. Правила прийому до вищого навчального закладу

Чтобы устранить цепные правила, для каждого нетерминального символа X ÎVN последовательно строится специальное множество цепных символов N X ={B½XÞ*B} а затем на основании построенных множеств выполняются преобразования правил P.

1. Шаги 2–5 выполнить для всех нетерминальных символов X ÎVN.

2. N X 0={X}, i:=1.

3. N X i= N X i–1È{B½(A®B)ÎP, AÎ N X i–1}.

4. Пока N X i¹ N X i–1, выполняется i:=i+1 и снова шаг 3.

5. Когда станет N X i=N X i–1, строим N X = N X i\{X} и переходим к шагу 2 – к очередному нетерминальному символу, до тех пор, пока они не будут рассмотрены все.

6. Новая грамматика: VT¢=VT, VN¢=VN, S¢=S, в P¢ входят все правила из P, кроме правил вида A®B.

7. Для всех правил (B®a)ÎP¢, если BÎN A, то в P¢ добавляются правила вида A®a.

Данный алгоритм так же, как и предыдущий, хотя и увеличивает количество правил грамматики, но упрощает построение распознавателей.

Пример:

Рассмотрим устранение цепных правил для грамматики, построенной в предыдущем примере. Грамматика G({a,b,c},{A,B,C,S},P,S), где P:

S®AaB½aB½cC½Aa½a½c

A®AB½a½b½B

B®Ba½a

C®AB½A½B½c.

Устраним цепные правила. Рассмотрим все нетерминальные символы, начиная с целевого.

1. N S 0={S}, i:=1.

2. N S 1={S}, N S 1=N S 0. N S =N S 1\{S}=Æ.

3. N A 0={A}, i:=1.

4. N A 1={A,B}, N A 1¹N A 0, i:=2.

5. N A 2={A,B}, N A 2=N A 1, N A =N A 2\{A}={B}.

6. N B 0={B}, i:=1.

7. N B 1={B}, N B 1=N B 0, N B =N B 1\{B}=Æ.

8. N C 0={C}, i:=1.

9. N C 1={C,A}, N C 1¹N C 0, i:=2.

10. N C 2={C,A,B}, N C 2¹N C 1, i:=3.

11. N C 3={C,A,B}, N C 3=N C 2, N C =N C 3\{C}={A,B}.

Получили: N S =Æ, N A ={B}, N B =Æ, N C ={A,B}, S¢=S. Построим множество правил P¢:

S®AaB½aB½cC½Aa½a½c

A®AB½a½b

B®Ba½a

C®AB½c.

Поскольку элементами множеств N X являются только нетерминалы A и B, требуется рассматривать правила только для символов A и B:

A®AB½a½b. Поскольку AÎN C ={A,B}, необходимо добавить правило C®AB½a½b. Но C®AB уже есть, следовательно, добавляем только C®a½b.

B®Ba½a. Поскольку BÎN C ={A,B} и BÎN A ={B}, необходимо добавить правила C®Ba½a и A®Ba½a. После всех добавлений и устранения дублирующих правил получим новые правила грамматики:

S®AaB½aB½cC½Aa½a½c

A®AB½a½b½Ba

B®Ba½a

C®AB½c½a½b½Ba.

Итоговое множество правил не содержит пустых и цепных правил. Хотя количество правил и увеличилось, но при построении распознавателя с таким множеством работать проще.

Контрольные вопросы

1. С какой целью выполняются преобразования грамматик?

2. Может ли результатом преобразований грамматики являться усложнение вида её правил?

3. Какого вида преобразования грамматик выполняются для упрощения процесса построения распознавателя?

4. Какие грамматики называются приведёнными?

5. Может ли терминальный символ быть недостижимым?

6. Какой символ называется бесплодным? Какой символ может быть бесплодным – терминальный или нетерминальный?

7. Какая грамматика называется грамматикой без e-правил? Допустимо ли наличие пустых правил в такой грамматике?

8. Какие преобразования необходимо выполнить, чтобы привести КС-грамматику к каноническому виду? К какому виду относятся эти преобразования – они упрощают правила грамматики или усложняют их?

9. Какое множество строится при удалении недостижимых символов – сразу нужное или сначала противоположное ему множество?

10. Какое множество строится при удалении бесплодных символов?


Дата добавления: 2015-07-12; просмотров: 334 | Нарушение авторских прав


Читайте в этой же книге: Назначение синтаксического анализатора | Обработка синтаксических ошибок | Свойства и распознаватели КС-языков | Пример 7. | Распознаватели КС-языков с возвратом | Нисходящий распознаватель с возвратом (с подбором альтернатив) | Табличные распознаватели КС-языков | Метод рекурсивного спуска | Разбор для LL(k)-грамматик | LR(k)-грамматики |
<== предыдущая страница | следующая страница ==>
Цели преобразований грамматик| Алгоритм 5. Преобразование грамматики к БНФ (Хомского).

mybiblioteka.su - 2015-2024 год. (0.007 сек.)