Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Порождение




Пример 10

Используя приведенные соглашения, можно записать грамматику из примера 5.2 в следующем виде:

E->E A E | (E) | -E | id

A-> +| - | * | / |

Из соглашений следует, что E и А — нетерминалы, причем E является старто­вым символом. Остальные символы представляют собой терминалы.

Существует несколько способов рассматривать процесс определения языка грамма­тикой: один - процесс построения деревьев разбора, другой способ, который дает точное описание нисходящего по­строения дерева разбора – порождение. Основная идея состоит в том, что продукция рассматривается как переписывающее правило, в котором нетерминал из левой части замещается строкой из правой части продукции.

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

E->E+E | E*E | (E) | -E | id (5.3)

Продукция E-> -E означает, что выражение, которому предшествует знак минуса, также является выражением. Эта продукция может использоваться для порождения бо­лее сложных выражений из простых, позволяя заменять любой экземпляр E на –E. В простейшем случае можно заместить одно E на -E и описать это как Е=> -E. Такая запись читается, как "E порождает -E", или "из E выводится -E". Продукция E—>(E) го­ворит, что можно также заменить один экземпляр E в любой строке грамматики на (E), например E*E=>(E)*E или E*E=>E*(E).

Можно взять нетерминал E и неоднократно применять продукции в произ­вольном порядке для получения последовательности замещений, например, E => -E => -(E) => -(id). Такая последовательность замен представляет порождение (id) из E. (Символ => означает "порождает за один шаг". Символ =*> означает "порождает за нуль или более шагов". Символ =+> используется для обозначения "порождает за один или более шагов".)

Предложение языка L(G), порождаемого грамматикой G, представляет собой сентенциальную форму без нетерминалов.

Например, строка -(id+id) является предложением грамматики (5.3) так как существует следующее порождение

Е => -E=> -(E) => -(Е + Е)=> -(id + Е) => -(id + id) (5.4)

Строки Е, -E, -(E),..., -(id+id), появляющиеся в процессе порождения, представляют собой сентенциальные формы данной грамматики. Для указания того, что -(id+id) мо­жет быть выведено из E, можно записать E=*>-(id + id).

На каждом шаге порождения осуществляется два выбора — во-первых, выбор за­меняемого нетерминала, во-вторых, его альтернативы. Например, порождение (5.4) из приме­ра 11 может продолжиться после -(E+E) следующим образом:

-(E+E) => -(E+id) => -(id+id) (5.5)

Каждый нетерминал в (5.5) замещается той же правой частью, что и в (5.4), но в дру­гом порядке.




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


Дата добавления: 2014-12-27; Просмотров: 792; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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