Студопедия

КАТЕГОРИИ:


Архитектура-(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
Е → •E+T
Е → •T
Т → •T*F
Т → •F
F → • (E)
F → •id

 

Здесь 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; Просмотров: 505; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.