КАТЕГОРИИ: Архитектура-(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) |
Пример 26
Построение множеств пунктов Пример 25 Операция goto Пример 24 Рассмотрим расширенную грамматику арифметических выражений: Е' → Е Е → Е+Т | Т (7.2) Т → T*F | F F → (E) | id Эту грамматику следует записать в ином виде (1) E→E+T (2) E→Т (3) T→ T*F (4) T→F (5) T→ (E) (6) T→ id
Если I представляет собой множество из одного пункта {[E' → •E]}, то closure(I) содержит пункты
Здесь E' → •E помещается в closure(I) в соответствии с правилом (1). Поскольку Е расположено непосредственно за точкой, согласно правилу (2) добавляются также E-продукции с точкой слева, т.е. E → • Е+Т и Е→ •Т. Теперь, поскольку среди пунктов имеется Т, следующее за точкой, мы добавляем Т→ • T*F и Т→ •F и, аналогично, F → •(E) и F → • id. Больше добавлять в closure(I) нечего.
Второй функцией является goto(I, X), где I является множеством пунктов, а X — символом грамматики, gotо(I, X) определяется как замыкание множества всех пунктов [А → αX • β], таких, что [А → α • Xβ] принадлежит множеству I. Если I представляет собой множество из двух пунктов {[E ' →Е • ],[Е → E•+T]}, то goto(I, +) состоит из Е→Е+ • Т E→ • T*F E→ • F E → •(E) E → • id Вычислили goto(I, +), рассмотрев пункты из I, у которых сразу за точкой идет +. Таким пунктом является Е → Е • +Т, в отличие от пункта Е' → Е •. Мы перемещаем точку за символ +, получая {E → Е+ • Т}, и рассматриваем замыкание этого множества.
Строим С— каноническую систему множества LR(0)-пунктов для расширенной грамматики G'. Каноническая система множеств LR(0)-пунктов для грамматики (7.2) из примеpa на рис. 37, а функция goto в виде диаграммы переходов детерминированного конечного автомата — на рис. 38.
I 0: E’ → •E E → •E+T E → •T T → •T*F T → •F F → •(E) F → • id I 1: E’ → E• E → E•+T
I 2: E → T• T → T•*F
I 3: T → F•
I 4: F → (•E) E → •E+T E → •T T → •T*F T → •F F → •(E) F → • id I 5: F → id • I 6: E → E+•T T → •T*F T → •F F → •(E) F → • id I 7: T → •T*F F → •(E) F → • id I 8: F → •(E) E → •E+T I 9: E → E+T• T → T•*F I 10: T → T*F•
I 11: F → (E) •
Рис. 37. Каноническая LR(0)-система для грамматики (7.2)
Рис. 38. Диаграмма переходов детерминированного конечного автомата для активных префиксов
Дата добавления: 2014-12-27; Просмотров: 537; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |