Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Удаление бесплодных символов




 

В грамматике G(VT,VN,P,S) символ AVN называется бесплодным, если для него выполняется: {α | A*α, αVT*} = , то есть нетерминальный символ явля­ется бесплодным тогда, когда из него нельзя вывести ни одной цепочки терми­нальных символов.

В простейшем случае символ является бесплодным, если во всех правилах, где этот символ стоит в левой части, он также встречается и в правой части. Более сложные варианты предполагают зависимости между цепочками бесплодных сим­волов, когда они в любой последовательности вывода порождают друг друга.

Для удаления бесплодных символов используется специальный алгоритм удале­ния бесплодных символов. Он работает со специальным множеством нетерми­нальных символов Yi. Первоначально в это множество попадают только те сим­волы, из которых непосредственно можно вывести терминальные цепочки, затем оно пополняется на основе правил грамматики G.

 

Алгоритм удаления бесплодных символов по шагам

 

1. Y0=, i:=1.

2. Yi= {А | (Аα)Р, α(Yi-1VT)*}  Yi-1.

3. Если YiYi-1, то i:= i+1 и перейти к шагу 2, иначе перейти к шагу 4.

4. VN’ = Yi, VT’ = VT, в P’ входят те правила из Р, которые содержат только символы из множества (VTYi), S’ = S.

 

3.3.5. Устранение -правил

 

-правилами (или правилами с пустой цепочкой) называются все правила грам­матики вида А, где AVN.

Грамматика G(VT,VN,P,S) называется грамматикой без -правил, если в ней не существует правил (А)Р, AS и существует только одно правило (S)P, в том случае, когда L(G), и при этом S не встречается в правой части ни одно­го правила грамматики.

Для того чтобы упростить построение распознавателей цепочек языка L(G), лю­бую грамматику G целесообразно преобразовать к виду без -правил. Существу­ет алгоритм преобразования произвольной КС-грамматики к виду без -правил. Он работает с некоторым множеством нетерминальных символов Wi.

 

Алгоритм устранения-правил по шагам

 

1. W0={A:(A)P}, i:=l.

2. Wi=Wi-1 {A: (Aα)P, бWi-1*}.

3. Если WiWi-1, то i:= i+1 и перейти к шагу 2, иначе перейти к шагу 4.

4. VN’ = VN, VT’ = VT, в P’ входят все правила из Р, кроме правил вида А.

5. Если (Аα)Р и в цепочку α входят символы из множества Wi, тогда на ос­нове цепочки α строится множество цепочек {α’} путем исключения из α всех возможных комбинаций символов из Wi, и все правила вида Аα’ добавля­ются в Р’.

6. Если SWi, то значит L(G), и тогда в VN’ добавляется новый символ S’, который становится целевым символом грамматики G’, а в Р’ добавляются два новых правила: S’|S; иначе S’ = S.

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

 

Устранение цепных правил

 

Циклом (циклическим выводом) в грамматике G(VT,VN,P,S) называется вывод вида А*А, AVN. Очевидно, что такой вывод абсолютно бесполезен. Поэтому в распознавателях КС-языков целесообразно избегать возможности появления циклов.

Циклы возможны только в том случае, если в КС-грамматике присутствуют цеп­ные правила вида АВ, A,BVN. Чтобы исключить возможность появления цик­лов в цепочках вывода, достаточно устранить цепные правила из набора правил грамматики.

Чтобы устранить цепные правила в КС-грамматике G(VT,VN,P,S), для каждого нетерминального символа XVN строится специальное множество цепных сим­волов Nx, а затем на основании построенных множеств выполняются преобразо­вания правил Р. Поэтому алгоритм устранения цепных правил надо выполнить для всех нетерминальных символов грамматики из множества VN.

 

Алгоритм устранения цепных правил по шагам

 

1. Для всех символов Х из множества VN повторять шаги 1–4, затем перейти к шагу 5.

2. NX0={X}, i:=1.

3. NXi= NXi-1{В: (AB)P, В NXi-1}.

4. Если NXi NXi-1, то i:=i+1 и перейти к шагу 2, иначе NX= NXi–{x} и перейти к шагу 1.

5. VN’ = VN, VT’ = VT, в Р’ входят все правила из Р, кроме правил вида АВ, S’=S.

6. Для всех правил (Аα)Р’, если BNА, BA, то в Р’ добавляются правила вида Вα.

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

 





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


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


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

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

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2510 - | 2325 -


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

Ген: 0.011 с.