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

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

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

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

Чтобы вычислить отношение (а, будем искать в правых частях правил пары смежных символов ХС. Тогда Х находится '1 Напомннм, что КС-грамматика С называегсн прнведепной, если в ней нег выводов вида А ~+ А, бесполезных снмволов н е-правнл, за нсключеннем, быть может, 3 — е, причем в атом случае 3 не встречается в правых частзх правая. ГЛ. 6. ОДНОПРОХОДНЫЙ СИНТАКСИЧЕСКИЙ АНАЛИЗ БЕЗ ВОЗВРАТОВ 6.6. ГРАММАТИКИ ПРЕДШЕСТВОВАНИЯ в отношении ( с каждым самым левым символом цепочки, не. тривиально выводимой из С.

(Читателю предоставляем разрабо. тать алгоритм для нахождения всех таких символов.) В нашем примере будут рассмотрены пары аВ и ВВ. В обоих случаях 8 а Ь в Ф Рнс. ос.11. Отношения предшестнонання. роль С играет В, причем нз В выводятся цепочки, начинающиеся символом а нли с. Поэтому Х()', где ХЕ(а, В) и !'Е а, с), тобы вычислить >, снова ищем в правых частях правил пары смежных символов, на этот раз вида СХ. Затем ищем символы )', которые могут оказаться на правом конце цепочки, выводимой из С за один или более шагов, и терминалы д, которые могут находиться в начале цепочки, выводимой из Х за нуль или более шагов. Если Х вЂ” терминал, то единственная возможность: Х =61. В данном примере парами такого вида будут $$ и ВЬ.

Поэтому У')д, где )'Е(Ь, с) и дЕ(а, с) для первого правила, 6( --Ь вЂ д второго. Подчеркнем, что атно!пения , ( н ) не обладают свойствами, которые обычно приписываются отношениям =-, ( и >, заданным на вещественных числах, целых и т. и. Например, обычно не является о|ношением эквивалентности, с и ), вообще говоря, не транзитивны, иа могут быть симметричными или рефлекснвными.

Так как в каждой ячейке матрицы на рис. 5.11 записано не более одного отншпения предшествования, то 6 — грамматика предшествования. Кроме того, правые части всех правил в 6 различны, так что 6 — грамматика простого предшествования, а Е (6) — язык простого предшествования. Рассмотрим праеовыводимую цепочку $ассЬ$ грамматики 6, ограниченную концевыми маркерами. Имеем з(а, а ° с и с)с. Основой цепочки ассЬ служит первый символ с, а отношения предшествования как раз и выделяют эту основу.

С) Всю существенную информацию, содержащуюся в матрице предшествования пхп, часто можно представить в виде двух п-мерных векторов, Такие представления матриц предшествования будут изучаться в разд. 7.1. Теорема 5.14, сформулированная ниже, показывает, что отношение с встречается в начале основы правовыводимой цепочки, отношение ' — между смежными символамн основы, а отношение ) — на правом конце основы. Это верно для любой грамматики без е-правил, но только в грамматиках предшествования любые два смежных символа активного префикса правовыводимой цепочки связаны ие более чем одним отношением предшествования.

Сначала выведем одно следствие из существования отношения предшествования для двух данных символов. Лемма 5.3. Пусть 6 =151, В, Р, В) — приведенная КС-граллатика без е-правил. (1) Если Х<~А или Х ' А и А — 1'а содержится в Р, п1о Х ° Г (2) Если А(а, А ' а или А)а и А — аУ содержится вР, то Уя)а. До к аз а тел ь ство. Мы докажем (2), а (1) оставим в качестве упражнения. Если А (а, то существует такая правая часть (5,АВ!о„что В ье ау для некоторой цепочки у. Так как А ~+ аК, то отсюда сразу получаем К >а. Если А ' а, то существует правая часть ~,Аале Поскольку а=>*а и А =>+ 661, отсюда снова получаем У'.>а.

Если А >а, то существует правая часть й,ВХй„ где В =О' уА и Х==,>*ад для некоторых у и д. Так как В=!> еуаК, то опять получаем нужное заключение. Теорема 5.14. Пусть 6=-(1ч, В, Р, Б) — приведенная КС-граго латика без е-правил. Если $$$ =:~„" ХРХр,... ХА„Аа,... ае =Ф„ХрХр,...ХАе,ХА...Х а,...а, (1) Х6„, (Х1 или Х,,е ' Х6 для р ( ! < й, (2) Х,, (Х, (3) Х;,, ' Х; для й > 1) 1„ (4) Х,я) а,.

Д о к а з а т е л ь с т в о. Доказательство проведем индукцией по п, Для п =-0 имеем $$$=ь,$ХА...Х $. По определению отношений предшествовання $(ХА, Х;, ' Х, для й) !)1 н Хе) $. Заметим, что Х„...Х, йе может быть пустой цепочкой, так как по условию в 6 нет е-правил. 459 ГЛ, З. ОДНОПРОХОДНЫЙ СИНТАКСИЧЕСКИЙ АНАЛИЗ БЕЗ ВОЗВРАТОВ З 3. ГРАММАТИКИ ПРЕДШЕСТВОВАН5555 Для доказательства шага индукции предположим, что тео рема верна для п. Рассмотрим вывод 555 =15," хр... х„,,Аа,, а Хр ХА.~.

ТХА Х 5а5 ач =Р,ХР Х,,);...);Х~ Г...Х,ат...а 5в котором на последнем шаге Х; заменяется цепочкой У;...)'о Поэтому ХГ „..., Х,— термийалы, причем случай 1=-1 не исключается. По предположению индукции Х, „,(ХГ или Х „' Х,. Поэтому ХГ„< ° )'„в силу леммы 5.3(1). К тому же Х~ находится в одном из трех отношений с символом справа от него (которым может быть и,).

Таким образом, 1',) Х,, либо )',)а; прп 1' =-!. Так как У,... !',— правая часть правила, то 1; ' 1;, ' ... ... ° 1;. Наконец, Хс„(Х; нли Х; „' Х, для р 5 ! по предположению индукции. Теорема доказана. Д Следствие 1. Если 6 — грамматика предшествования, то утверждение (!) теоремы 5.14 можно усилить„добавив слова „точно одно из отнои5ений ( или ' ".

Утверждения (1) — (4) можно усилить„добавив слова „и не выполняются никакие другие отношения", Доказательство. Непосредственно следует из определения грамматики предшествовання. Г Следствие 2. Каждая грамматика простого предшествования однозначна. Доказательство. Надо лишь заметить, что для любой отличной от 5 правовыводнмой цепочки р предыдущая право- выводимая цепочка а, для которой 5х=>,5, определяется Однозначно. из следствия 1 вытекает, что основу цепочки 5 можно однозначно определить, просматривая эту цепочку (ограниченную концевыми маркерами) слева направо, пока впервые не обнаружится отношение ЗР, а затем возвращаясь назад до ближайшего (, Основа лежит между ними, Так как грамматика простого иредшествования обратима, то нетерминал, к которому надо свернуть основу, находится однозначно.

Таким образом, и определяется по () однозначно. Гз Заметим, что так как мы оперируем с приведенными грамматиками, нетрудно доказать, что этот и последующие алгоритмь' тратят на разбор линейное время. Доказательства оставляем в качестве упражнений. Теперь опишем, как по грамматике простого предшествования строить детерминированный правый анализатор.

длго ритм 5.12. Построение алгоритма типа „перенос--свертка" для грамматик простого п р едГпествования. Вход. Грамматика простого предшествования 6=-(!А), л, Р, 5), в которой правила занумерованы числами от 1 до р. Выход. 4 =(1, у), алгоритм разбора типа „перенос — свертка" для грлммагики 6 Метод. (1) Алгоритм .4 использует символ 3 в качестве марксра дна магазина и правого концевого маркера входной цепочки. (2) Функция переноса 5' зависит только от верхнего символа магазина и самого левого символа необработанной части вход- ной цепочки. Поэтому зададим 5' только на (5) 0 г.

0 (5)) К(2 0 (5)), за исключением одного случая (правило (в)): (а) 1(Х, а) =перенос, если Х ° а или Х.'..а, (б) !" (Х, и) — --свертка, если Х) а, (в) 1(55, 5) =допуск' ), (г) ) (Х, а) =--ошибка в остальных случаях. (Правила реализуются с помощью матрицы предшествования.) (3) Функция свертки д зависит только от верхней части магазинной цепочки, вкл5очающей основу и еще один символ пнже нее. Оставшаяся необработанной часть входной цепочки иа д не влияет. Поэтому зададим у только на (!А)() 2 !1(3))*: (а) 3(Х „ХАХА,...Х„е) =5, если Хее,( ХА, Ху, ' Хг для к > 1) 1 и А — ХАХ„,...

Х,— правило с номером !. (Заметим, что функц55я и участвует только тогда, когда Х, ) а, где а — текущий входной символ.) (б) у(се, е)=ошибка в остальных случаях. Гз Пример 5,35. Построим алгоритм разбора типа „перснос— свертка" с1=-(Г, ф для грамматики 6 с правилами (1) 5 а555 (2) 5- с Отношения предшсствования для грамматики 6 приведены на рис. 5.1!. Функцию переноса !' можно вычислить с помощью матрицы предшествования.

Функция свертки у определяется так: (1) д(Ха555) =-1, если Х~ (5, а, 5), (2) 3(Хс) =2, если ХЕ (5, а, ф). (3) к (и) =ошибка в осталы5ых случаях. ') Заметим, что зте правило имеет приоритет иад правилами (2а) и (2О), когда Х=д и о=3 лв1 ГЛ. З. ОДНОПРОХОДНЫЙ СИНТАКСИг!ЕСКИЙ АНАЛИЗ БЕЗ ВОЗВРАТОВ З,З.

ГРАММАТИКИ ПРЕДВ!ЕСТВОВАНИЯ Для входной цепочки ассЬ алгоритм Л сделает такую последовательность шагов: ($, аалг$, е)) — '($а, ссЬ$, е) )-'($ас, с6$, е) ) — г($а5, с6$, 2) ) — *($а5с, 6$, 2) ! — '($а55, 6$, 22) ! — '($а556, $, 22) г ($5 $221) В конфигурации ($ас, с6$, е), например, будет 1(с, с) =свертка и д (ас, е) = 2. Поэтому ($ас, сЬ$, е)) — ($а5, с6$, 2) Посмотрим, как ведет себя А па цепочке асЬ, не принадлежащей языку С (6). Для этой цепочки алгоритм 2 сделает последовательность н!агов ($, ас6$, е) ! — '($а, с6$, е) г-'($ас, 6$, е) )-г($а5, 6$, 2) ( — ' ($656 $2) ! — ошибка В конфигурации ($а56, $, 2) будет 1(6, $)=свертка. Так как $< а и и ' 5 Ь, то свертку могкио сделать только, если а56 — правая часть какого-нибудь правила.

Однако такого правила пет, и поэтому д (а56, е) =-ошибка. На практике мы могли бы завести список „ошибочных правил", и всякий раз, когда с помощью функции д обнаруживается огпебка, можно было бы справиться в этом списке, нельзя ли сделать свертку с помощью ошибочного правила. Другие приемы исправления ошибок, ориентированные на разбор методом предшествовання, указаны в замечаниях но литературе в конце этого раздела, ( ) Теорема 5,15. Агггоритм 5.12 строит корректный алгоритм разбора типа „перенос — свертка" д гя грамматики простого пред- шествования. Доказательство.

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

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

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

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