Главная » Просмотр файлов » Теория синтаксического анализа, перевода и компиляции - Том 1

Теория синтаксического анализа, перевода и компиляции - Том 1 (943928), страница 36

Файл №943928 Теория синтаксического анализа, перевода и компиляции - Том 1 (Теория синтаксического анализа, перевода и компиляции) 36 страницаТеория синтаксического анализа, перевода и компиляции - Том 1 (943928) страница 362013-09-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Теорема 2.16. Если Š— КС-язык, то Е=-Е(6) для некоторой приведенной КС;грамматики 6. До к а з а т е л ь с т в о. Применить к КС-грамматике, определяющей язык Е, алгоритмы 2.8 — 2.11. Определение. А-правилпж КС-грамматики называется правило вида А — сс (ие путайте А-правило с е-правилом, которое имеет вид В е). Введем еще преобразование, с помощью которого можно удалить из грамматики одно правило вида А — иВ(г. Чтобы устранить это правило, надо добавить к грамматике новые правила, получающиеся из него заменой нетерминала В правыми частями всех В-правил. Лемма 2.14.

Пусть 6=()т), Х, Р, 5) — КС-грамматика и Р содержит правило А- аВ(), где ВЕЯ, а а и р принадлежат (г') () Х)'. Пусть  — у, ) у,)...!Та) — все В-правила втой грамматики. Пусть 6'=(14 Х, Р' 5), где Р'=(Р— (А аВЩ) () (А-~пуф) ауг() ~...[ауД Тогда Е (6) = Е (6 ). у р О г ц ) '!асти грамматику называют приведенной, просто если в ней нет бесс!Олеаиых симеонов.— Прим.

перев. 175 Гл. 3. элеме нты теОРии языКОВ З.з. коитакстиО ГЗОБОдиые языки Пример 2.25. Устраним правило А — аАА из грамматики б, имеющей два правила А — «аАА ~ Ь, Применим лемму 2.14, полагая и=а, В=А и 5 — А, и получим грамматику 6' с правиламн А — ааААА ( иЬА ) Ь Деревья выводов цепочки ааЬЬЬ в грамматиках 6 и 6' показаны на рис. 2.12. Заметим, что эффект этого преобразования ! ! ! ь в а е Рнс.

2.!2. Дерезья выводок а — з грамматике б; б — з гсзз«ызтнке б'. состоит в "склеивании" корня дерева на рнс. 2.12, а с его вторым прямым потомком. 2.4.3. Нормальная Форма Хомсиого Определение. КС-грамматика 6 =- (1ч, Х, Р, В) называется грамматикой в норлзпльной форме Хо«вского (или в бинарной нормальной форд!а), если каждое правило пз Р имеет один из следующих видов: (1) А ВС, где А, В и С принадлежат Р1, (2) А — а, где а ~ Е, (3) 5 — г, если г ~ Е (6), причем В не встречается в правых частях правил. Покажем, что каждый КС-язык порождается грамматикой в нормальной форме Хомского.

Этот результат полезен в тех случаях, когда требуется простая форма представления КС-языка. Алгоритм 2,12. Преобразование к нормальной форме Хомского. Вход. Приведенная КС-грамматика 6=(>1, 2, Р, В). Выход, КС-грамматика б' в норь!альной форме Хомского, эквивалентная 6, т. е. Е(6') =Е(6). Мгп!Од. Грамматика 6' строится по 6 следующим образом: (1) Включить в Р' каждое правило из Р вида А — а. (2) Включить в Р' каждое правило из Р вида А — ВС, (3) Вкл!Очить в Р' правило 5- г, если опо было в Р. 176 (4) Для каждого правила из Р вида А Х,,Х„, где й > 2, включить в Р' правила А Х <Хз Х > <Х,...Х„>-Х;<Х,...Х,> <Х зХ,Х„> Х;.

з <Х„,Х„> <Х,Х > Х',Х' где Х; = Хо если Х! с Х; Х; — новый нетерминал, если Х! а 2; <Х!...Х„> — новый нстерминал. (5) Для каждого правила из Р вида А — Х,Х„где хотя бы один из символов Х, и Х, принадлежит 2, включить в Р' правило А Х;Х:. (5) Для каждого нетерминала вида а', введенного на шагах (4) и (5), включить в Р' правило а' а, Наконец, пусть М'— это Ь) вместе со всеми новыми нетерминалами, введенными при построении Р'. Тогда искомой грамматикой будет 6'=(Ы', Е, Р', В)').

() Теорема 2.17. Л!7сть Š— КС-язык. Тогда Е=-Е (6') для некоторой КС-гражлгатики 6' г нормальной форд!г Хомского. Д о к а з а т е л ь с т в о. По теореме 2.15 Е определяется приведенной грамматикой 6. Алгоритм 2.12 строит по ней грамматику б', которая, очевидно, имеет нормальную форму Хомского. Остается показать, что Е(6) =-Е(6'). Это доказывается применением леммы 2.14 к каждому правилу грамматики б', в правую часть которого входит а', а затем к правилам с не- терминалами вида <Х!...Хд>.

Пример 2.26. Пус1ь 6 — приведенная КС-грамматика, определяел!ая правилами 5 — ОАВ ~ ВА А — ВВВ~ а  — АО1Ь Строим Р' алгоритмом 2.12, сохраняя правила 5 — ВА, А — а,  — АВ и  — Ь, Заменяем 5 — аАВ правилами  — а'<АВ> и <АВ> — АВ, а А — ВВ — правилазщ Л В <ВВ> и <ВВ>- ВВ. Наконец, добавляем а' — а. В результа!е получаем грамматику ') Авторы забыли исключить 5 кз правых честей прззнз!. Нодо либо мсднфнннроззть алгоритм 2.!2, либо, кроше, ззестн поные символ 3' н прззнло Я' — Л н прежде, чем применять алгоритм 2.!2, сдслзть прнзеденне грзммзтнкн.— Г! рил.

рзгс 177 гл. контекстно.сноводные языки Гл. а. Элементы теОРии языкОВ 5 — а' <АВ) ~ ВА А - В <ВВ>(а  — А5(Ь <АВ> — АВ <ВВ> — ВВ а'- а') () Е- Е+Т)Т Т вЂ” Т ар(Р Р- (Е) ~)а 179 178 6'=(1'м (а, д), Р', 5), где гч' =-(5, А, В, <АВ>, <ВВ>, а')„а р состоит из правил ?.4.4. Нормальная форма Грейбвх Теперь покажем, что для каждого КС-языка можно найти грамматику, в которой все правые части правил начинаются с терминалов.

Построение такой грамматики основано на устранении так называемой левой рекурсии. Определение. Нетерминал А КС-грамматики 6=(1ч, Е, Р, 5) называется рекурсивным, если А =)" аА!з для некоторых са и (1. Если а=е, то А называется леворекурсилным. Аналогично, если (з=е, то А называется праворекурсивным. Грамматика, имеющая хотя бы один леворекурсивный нетерминал, называется лево- рекурсивной. Аналогично определяется праворекурсивная грамматика.

Грамматика, в которой все нетерминалы, кроме, быть может, начального символа, рекурсивные, называется рекурсивной, Некоторые из обсуждаемых далее алгоритмов разбора не могуг работать с леворекурспвиыми грамматиками. Покажем, что каждый КС-язык определяется хотя бы одной не леворекурсивной грамматикой. Начнем с устранения в КС-грамматике непосредственной леворекурсивности. Лемма 2.1О. Пус!па 6=(Х, Е, Р, 5) — КС-грамматика, в которой А = Асс, ) Аа,(...) Аа,„)(3,)(3 (...

(ба — все А-правила из Р и ни одна из цепочек ()г не начинал!пел с А, Пусть 6'=()Ч()(А'), Х, Р', 5) где А'--новый нетерминал, а Р' получается из Р заменой А-правил правилами ') А 0.11.!" )1.!0 А'!().А'!" Р.А' А'- а,!аа)...(ам)а,А'!ааА'!...(а А' Тогда Е(6') =Е(6). ') 1)адо еще устранить В нз праапй части правила  — АВ.— Прем. ргб, е) Заметим, чтс праапла А Иг ссдержатсн нак а исходном, так н а реаультнрующем множестве А-праанл. Д о к а з а т е л ь с т в о. 11епочкп, которые можно получить в грамматике 6 из нетерминала А применением .4-правнл лишь к самому левому нетсрминалу, образуют регулярное множество (()ь+()е+ ° ° ° +й,)(сс1+па+ ° .. +ам) *. Это в точности те не, которые можно получить в 6' из А с помощью правых аз А'-п а- выводов, применив один раз А-правнло и несколько раз '-правила.

(В результате весь вывод уже не будет левым,) Все шаги вывода в 6, на которых не используются А-правила, можно непосредственно сделать в 6', так как пе А-правила в 6 и ' одни и те же. Отсюда можно заключить, что Е (6') с Е(6). Обратное вкл!очение доказывается по существу так же. В 6' берется правый вывод и рассматриваются последовательности шагов, состоящие ич одного применения А-правила и нескольких применений А'-правил. Таким образом, Е( ) = =- Е (6').

Г) На рис. 2.13 показано, как действует преобразование, описанное в лемме 2.!5, на деревья выводов. 'Рнс. 2.!3. Части деревьев: а — часть дереаа н'м; б — соотаетстаующан часть а Пример 2.27. Пусть 6,— наша обычная грамматика с прави- лами ГЛ. |К ЭЛЕМЕНТЫ ТЕОРИИ ЯЗЫКОВ гм. ко||такстно-своводные языки Если применить к ней конструкцию леммы 2.15, то получится эквивалентная ей грамматика 6' с правилами Е Т/ТЕ' Е' — + Т /+ ТЕ' Т- Р/ГТ' Т' —,'Р/,РТ р — (е)/а Е) Теперь мы готовы описать алгоритм, устраняющий левую рекурсию из приведенной КС-грамматики.

По идее этот алгоритм подобен алгоритму решения уравнений с регулярными коэффициентами. А л г о р и т м 2.13. У с т р а н е н и е л е в о й р е к у р с и и. Вход. Приведенная КС-грамматика 6=(Х, Х, Р, Б). Выход. Эквивалентная КС-грамматика 6' без левой рекурсии. Айетод. (1) Пусть 5! =- (А„..., А„/, Преобразуем 6 так, чтобы в правиле А,— а цепочка а начиналась либо с терминала, либо с такого Л,, что 1> С С этой целью положим г'= 1.

(2) Пусть множество Акправил — это А, — А,а,/ ... .../А|а,„/|3,/.../|3р, где ни одна из цепочек р, нс начинается с Ам если 7г(г, (Это всегда можно сделать.) Заменим А,-правила правилами А; !3,/... //)р/р,А;/.../ррА/ А;.— а,/.../а /а,Л;/.../а А;. где А; — яовый нетсрминал. Правые части всех Акправил начинаются теперь с терминала или с Аь для некоторого к > г.

(3) Если |' — н, полученную грамматику 6' считать результатом и остановиться. В противном случае положить г =-г + 1 и 1-1. (4) Заменить каждое правило вида А, — А а правилами Л| — г га/...//! а, где А — /!г/.../5 — все Ат-правила. Так как правая часть каждого А,-правила начинается уже с терминала или с А„для й > 1, то и правая часть каждого Акправнла будет теперь обладать этим свойством, (5) Если 1:.

†— 1, перейти к шагу (2). В противном случае положить )=1+1 и перейти к и|агу (4). й Теорема 2.18. Каждый КС-язык олределлетсл не лееорекуреиеной гражишпикой. Д о к а з а т е л ь с т в о. Пусть 6 — приведенная грамматика, порождающая КС-язык Е. При применении к ней алгоритма 2.13 гво используются только те преобразования, которые упоминаются в леммах 2.14 и 2.15. Поэтому результиру|ощая грамматика 6' порождает Б. Сформулируем два утверждения, которые по существу уже встречались в конце описаний шагов (2) и (4) алгоритма 2.13: (2.4А) После выполнения шага (2) для |' правая часть каждого Лкправила начинается с терминала или с такого А,, чтой>Е (2,4,5) После выполнения шага (4) для г и 1 правая часть каждого Акправила начинается с терминала или с такого А, что 7г > !'. Докажем, что (2.4,4) истинно для всех (=п, а (2А.5) истинно для всех таких пар (г, !), что г ~н н г >1.

Рассмотрим значения параметров | и (г, 1) утверждений (2.4.4) н (2.4.5) в том порядке, в каком опн встречаются в ходе работы алгоритма 2,13 на шаге (2) н шаге (4) соответственно: 1, (2, 1), 2, ..., г — 1, (г', 1), ..., (г, 1), (г,г — 1),г, ...,(н,гг — 1),и и проведем доказательство индукцией по значениям параметров в этом упорядочении. Базис. Так как на шаге (2) цепочки р„ ..., /)р не могут начинаться с А„ то для г = 1 утверждение (2.4.4) истинно. Шаг индукции. Предположим, что (2.4.4) и (2.4.5) истинны для значений параметров, предшествующих (г, 1). Так как 1< г', то по предположению индукции (2.4.4) истинно для 1'. Поэтому ца шаге (4) каждая из цепочек /1„..., (! начинается с терминала или с такого А„что 1г > !. Но после завершения шага (4) цепочки 5„..., /) становятся префиксами правых частей Акправил, Следовательно, (2.4.5) истинно для (|', !).

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

Тип файла
DJVU-файл
Размер
4,65 Mb
Тип материала
Высшее учебное заведение

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

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