КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Устранение цепных правил
ЭКВИВАЛЕНТНЫЕ ПРЕОБРАЗОВАНИЯ КС-ГРАММАТИК Алгоритм устранения недостижимых символов. Недостижимые терминалы (группа “в” бесполезных символов) и недостижимые нетерминалы, порождающие терминальные строки (группа “б” бесполезных символов), исключаются из грамматики с помощью алгоритма устранения недостижимых символов. Вход: КС-грамматика G=(VN, T, P, S) Выход: Эквивалентная КС-грамматика G’=(N’, T’, P’, S) у которой L(G)=L(G’) и для всех Z Î S’ существуют выводы SÞ*aZb, где a,bÎ (S’)*. Здесь, как и в предыдущей задаче, сначала решается обратная задача, т.е. определяется множество W достижимых символов Z: W={Z | Z Î S, $ SÞ*aZb, где a,bÎ (S’)*}. 1. Положить W0=S 2. Вычислить W1= W0 È {X | X Î S, (A®aXb) ÎP, A Î W0, a,bÎ (S’)*} 3. Если W1¹W0, то положить W0= W1 и перейти к п.2; иначе положить W= W1 4. Вычислить N’=NÇW, T’==TÇW, Б=S-W, P’=P-PБ, где PБÍP – это множество правил, содержащих недостижимые символы XÎ Б, т.е. PБ = {(X ®a)ÎP для всех XÎ Б, где aÎS} Пример: Преобразование КС-грамматики с правилами 1) Q ® ab 2)B ® b 3)C ® db в эквивалентную грамматику, не содержащую бесполезных символов.
Цепное правило – это правило вида А®В, где А,В Î N. Цепные правила могут быть причиной нежелательных свойств грамматики, таких, например, как циклы. Алгоритм устранения цепных правил осуществляет замещение правой части каждого цепного правила, используя для этого не цепные правила. Вход: КС-грамматика G=(N, T, P, S) без e-правил. Выход: Эквивалентная КС-грамматика G’=(N, T, P’, S) без цепных правил. 1. Для каждого нетерминала А вычислить NA = {B | AÞ*B, где BÎ N }: 1.1. Положить N0A={A} 1.2. Вычислить N1A = N0A È{C | (B ® C) Î P, B Î N0A, C Î N } 1.3. Если N1A ¹ N0A, то положить N0A = N1A и перейти к п.1.2, иначе положить 2. Построить множество P’ так: если (В ®a) Î P не является цепным правилом (a Ï N), то включить в P’ правило А ®a для каждого А, такого, что В Î NA, т.е. P’={ А ®a для всех (В ®a) Î P, где a Ï N и В Î NA } Пример: Преобразовать грамматику G с правилами: G: S® X X ® Y Y ® Y; | z в эквивалентную грамматику без цепных правил:
Пример: Преобразовать грамматику G с правилами: G: E® E+T E®T T®T*P T®P P®i P®(E) 1. После выполнения шага 1 алгоритма получаем: NE ={E, T, P}, NT ={T, P}, NP ={P} 2. Выберем первый нетерминал E из множества NE. Формируя множество правил, левая часть которых - нетерминальный символ Е, а правые части нецепных правил исходной грамматики, в левой части которых находятся символы из множества NE, получаем: { E® E+T, E®T*P, E®i, E®(E)}. Таким же образом рассматриваем остальные символы из NE, затем символы из NT и NP . 3. Окончательно получаем P’={ E® E+T, E®T*P, E®i, E®(E), T®T*P, T®i, T®(E), P®i, P®(E)}
Дата добавления: 2014-01-03; Просмотров: 1472; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |