Главная » Просмотр файлов » Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений

Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271), страница 43

Файл №1082271 Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений) 43 страницаХопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271) страница 432018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 43)

5.1). С) Пример 5.3. Рассмотрим более сложную КС-грамматику, которая представляет выражения типичного языка программирования (в несколько упрощенном виде). Вопервых, ограничимся опера~орами + и '„представляющими сложение и умножение.

Вовторых, допустим, что аргументы могут быть идентификаторами, однако не произвольными, т.е. буквами, за которыми следует любая последовательность букв и цифр, в том числе пустая. Допустим только буквы а и Ь и цифры О и 1. Каждый идентификатор должен начинаться с буквы а или Ь, за которой следует цепочка из (а, Ь, О, 1) . 5.1. КОНТЕКСТНО-СВОБОДНЫЕ ГРАММАТИКИ 187 В нашей грамматике нужны две переменные. Одна обозначается Е и представляет выражения определяемого языка. Она является стартовым символом.

Другая переменная, (, представляет идентификаторы. Ее язык в действительности регулярен и задается регулярным выражением гя в 1«)га в Ь в О -'; 1)*. В грамматиках, однако, регулярные выражения непосредственно не используются. Вместо этого будем обращаться к множеству продукций, задаюгцих в точности то же са- мое, что и соответствующее регулярное выражение. 1. Š— «1 2.

Š— + Е «Е 3. Š— «ЕвЕ 4. Š— «1'Е) 5. 1 — «а б. 1«Ь 7. 1 — «(а 8. 1 — «(Ь 9. 1 — «РО 10. 1 — «П Рис. 5.2 Контекстно-своооднан граитатика длн нростых выражений Грамматика для выражений определяется формально как О = 11Е, 1), Т, Р, Е), где Т= 1-«, *, 1, ), а, Ь, О, 1), а Р представляет собой множество продукций, показанное на рис.

5.2. Продукции интерпретируются следующим образом. Правило 1 является базисным для выражений. Оно гласит, что выражение может быть одиночным идентификатором. Правила 2 — 4 описывают индуктивное образование выражений. Правила 2 и 3 говорят, что выражение может состоять из двух выражений, соединенных знаком сложения или умножения. Правило 4 — что если заключить произвольное выражение в скобки, то в результате получается также выражение. Сокращенное обозначение продукций Продукцию удобно рассматривать как "принадлежащую" переменной в ее голове.

Мы будем часто пользоваться словами "продукции для А" или "А-продукции" для обозначения продукций, головой которых является переменная А. Продукции грамматики можно записать, указав каждую переменную один раз и затем перечислив все тела продукций для этой переменной, разделяя их вертикальной чертой. Таким образом, продукции А — «аь А — «ал ..., А — «а;, можно заменить записью А -+ а, ! а, ) ... ~ а„.

Например, грамматику для палиндромов 1см. рис. 5.1) можно записать в виде Р -+ в ! 0 ( 1 ( ОРО ! 1Р1. 188 ГЛАВА б. КОНТЕКСТНО-СВОВОДНЫЕ ГРАММАТИКИ И ЯЗЫКИ Правила 5-10 описывают идентификаторы Ь Правила 5 и б образуют базис; они гласят, что а и Ь вЂ” идентификаторы. Остальные четыре правила описывают индуктивный переход: имея произвольный идентификатор, можно приписать к нему справа а, Ь, 0 или 1 я получить еше один идентификатор. ЕЗ 5.1.3.

Порождения с использованием грамматики юь Для того чтобы убедиться, что данные цепочки принадлежат языку некоторой переиениой, мы применяем продукции КС-грамматики. Есть два способа действий. Простейший подход состоит в применении правил "от тела к голове".

Мы берем цепочки, про которые извес~но, что они принадлежат языкам каждан из переменных в теле правила, записываем их в соответствующем порядке вместе с терминалами этого тела и убеждаемся, что полученная цепочка принадлежит язык> переменной в голове. Такая процедура называется релурсивным выводом (гесигзгке 1п(егепсе).

Есть еше один способ определения языка грамматики, по которому продукции применяются "от головы к телу". Мы разворачиваем стартовый символ, используя одну из его продукций, т.е. продукцию, головой которой является этот символ. Затем разворачиваем полученную цепочку, заменяя одну из переменных телом одной из ее продукций, и так далее, пока не получим цепочку, состоящую из одних терминалов. Язык грамматики — это все цепочки из терминалов, получаемые таким способом.

Такое использование грамматики называется выведенная, или порождением (деичаПоп). Начнем с примера применения первого подхода — рекурсивного вывода, хотя часто естественнее рассматривать грамматики в качестве применяемых лля порождений, н далее чы разовьем систему записи таких порождений. Пример 5.4. Рассмотрим некоторые из выводов, которые можно сделать, используя грамматику лля выражений (см.

рис. 5.2). Результаты этих выводов показаны на рис. 5.3. Например, строчка (1) говорит, что в соответствии с продукцией 5 цепочка а принадлежит языку переменной Ь Строчки (Н)-(1г) свидетельствуют, что цепочка ЬОО является идентификатором, полученным с помошью одного применения продукции 6 и затем двух применений продукции 9.

В строчках (г) и (и) использована продукция 1 для того, чтобы прийти к заключению, что цепочки а и ЬОО, ко~орые выведены как идентификаторы в строчках (1) и (1в), принаалежат также и языку переменной Е. В строчке (ит) применяешься продукция 2 для вывода, что сумма этих идентификаторов являешься выражением, в строчке (ий) — продукция 4, и эта же сумма в скобках также представляет собой выражение. В строчке (1х) используется продукция 3 для умножения идентификатора а на выражение, исследованное в строчке (ип). П Процесс порождения цепочек путем применения продукций "от головы к телу" требует определения нового символа отношения ~.

Пусть О= (1; Т, Р,5) — КС-грамматика. Пусть а413 — цепочка из терминалов и переменных, где А — переменная. Таким 5.1. КОНТЕКСТНО-СВОБОДНЬГЕ ГРАММАТИКИ образом, а и 1З вЂ” цепочки из 1РО Т), А н И Пусть А -+ у — продукция из О. Тогда мы говорим, что аАр ~ ау1э. Если грамматика 0 подразумевается, то это записывается просто как аАД ~ ауД Заметим, что один шаг порождения заменяет любую переменную в цепочке телом одной нз ее продукций. Рис. 5.3.

Вывод цепочек с использованием грачсиатики, показанной на рис. 5.2 Для представления нуля, одного или нескольких шагов порождения можно расши- рить отношение =е подобно тому, как функция переходов 6 расширялась до б . Для обозначения нуля или нескольких шагов порождения используется символ . Базис. Для произвольной цепочки а терминалов и переменных считаем, что а =ь а. о Таким образом, любая цепочка порождает саму себя. Индукция.

Если а =в 1З и Д =в у, то а =» у Таким образом, если а может породить о о ' о 1з за нуль или несколько шагов, и из 13 еще за один шаг порождается у, то а может поро- дить у. Иными словами, а ~ Д означает, что для некоторого и > 1 существует последо- в вательность цепочек у„уз, ..., у„, удовлетворяюшая следующим условиям. 1. а= уь 2. р= ус 3. Для! = 1,2, ..., и — 1 имеет местоотношение у =ау, Если грамматика 0 подразумевается, то вместо ~ используется обозначение =в .

ГЛАВА б. КОНТЕКСТНО-СВОБОДНЫЕ ГРАММАТИКИ И ЯЗЫКИ 190 ! Пример 5.5. Вывод о том, что а»(а+ ЬОО) принадлежит языку переменной Е, можно отразить в порождении этой цепочки, начиная с Е. Запишем одно из таких порождений. Е =» Е " Е ~ 1 * Е ~ а * Е =» а ' (Е) =» а» (Е ж Е) =-» а * (1 ж Е) =» а» (а ь Е) ~ а * (а + 1) ~ а * (а + 10) =» а * (а + 100) ~ а " (а + ЬОО) На первом шаге Е заменяется телом продукции 3 (см. рис. 5.2). На втором шаге применяется продукция 1 для изменения Е на 1 и т.д. Заметим, что мы систематически придерживались тактики замены крайней слева переменной в цепочке. На каждом шаге, однако, мы можем произвольно выбирать переменную для замены и использова~ь любую из продукций для этой переменной. Например, на вт.ором шаге мы могли бы изменить второе Е на (Е), используя продукцию 4.

В этом случае Е * Е » Е * (Е). Мы могли бы также выбрать имену, не приводящую к той же самой цепочке терминалов. Простым примером было бы использование продукции 2 на первом же шаге, в результате чего Е.=» Е+ Е, но теперь ника»ля замена переменных Е не превратит цепочку Е » Е в а * (а + ЬОО). Мы можем использовать отношение ~ для сокрашения порождения. На основании базиса нам известно, что Е =» Е. Несколько использований индукции дают нам утвер- ждения Е =» Е * Е, Е =» 1" Е и так далее до заключительного Е ~ а» (а + ЬОО).

Две точки зрения — рекурсивный вывод и порождение — являются эквивалентными. Таким образом, можно заключить, гто цепочка терминалов»» принадлежит языку неко- торой переменной А тогда и только тогда, когда А =» в. Доказательство этого факта, однако, требует некоторых усилий, и мы отложим его до раздела 5.2.

П 5.1.4. Левые и правые порождения Для ограничения числа выборов в процессе порождения цепочки полезно потребовать, чтобы на каждом шаге мы заменяли крайнюю слева переменную одним из тел ее продукций. Такое порождение называешься левым ()ейглозг), и лля его указания использу- ются отношения ~ и =». Если используемая грамматика С не очевидна из контекста, то / ее имя С также добавляется внизу.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее