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

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

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

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

(4) После того как магазин сократнтся до цепочки а, преобргзователь М уже не может «помнить», сколько символов было еа входе, потому что теперь конфигурации преобразователя М для разных значений р (где й+)р — число символов а) отличаются только их состояниями. Таким образом, М не знает, сколько теперь надо выдать чисел 3, () Пример 3.27. Пусть 6, Определяется правилами (!) В -- АЬ (2)  — Ас (3) А — АВ (4) А — а (5)  — а 1.(6,) =а Ь+а'с. Легко показать, что 6,— правоанализирзс. мая грамматика.

С помощью рассуждений, аналогичных проведенным в упр. 3.26, можно показать, что 6, не левоанализируема. Теорема 3.13. Классы лево- и правоанализируелых гражлатих несравнимы. Д о к а з а т е л ь ство. Примеры 3. 26 и 3. 27. Несмотря на эту теорему, восходящий синтаксический анализ, как правило, привлекательнее нисходящего, так как для данного языка программирования часто легче написать правоанализируе. мую грамматику, чем левоанализируемую.

К тому же, как от~:е. чалось, 1).-грамматики содержатся в классе (.1«-грамматик. В еле. дующей главе мы увидим также, что естественное моделирование недетерминированного МП-преобразователя в случае, когда он яз. ляется правым анализатором, работает для более общего класс» грамматик (в некотором смысле, который там будет разъяснен) чем в случае левого анализатора.

») Эдесь подразумевается, что верх мага»ива рясположев слева.— НРк" п«р«в, „н ко с точки зрения процесса трансляции левый анализ предпочтит ительнее. Мы покажем, что каждый простой СУ-перевод можно но выполнить с помощью (1) МП-преобразователя, дающего левые разборы входных це„очек, за которым следует (2) ДМП-преобразование, отображающее левые разборы в выходные цепочки данного СУ-перевода. Ннтересно, что существуют простые СУ-переводы, для которых в прн приведенном выше утверждении нельзя заменить «левый разбор» на «правый разбор». Если компилятор транслирует так, что вначале строится полный разбор, который потом превращается в объектный код, то указанное обстоятельство достаточно для доказательства того, что существуют переводы, требующее на промежуточной стадии именно левого разбора.

Однако многие компиляторы строят дерево разбора вершина за вершиной и вычисляют перевод в каждой вершине, когда она построена, Мы утверждаем, что если перевод нельзя вычислить прямо по дереву разбора, то его нельзя вычислять вершина эа вершиной, когда само построение вершин идет снизу вверх. Это обсуждается подробно в гл.

9, и мы просим читателя подождать до этой главы с формализацией материала, связанного с переводом <вершина за вершиной». Определение. Пусть 6 —. (1х, Х, Р, В) — КС-грамматика. Определим язык 1,У левых и язык 1.о правых разборов грамматики 6: Ц=- (я ~ Вм.=зги для некоторой шит(.(6)) 1.о= (и" ) 5 =1>„ге для некоторой шЕ 1.(6)) Обозначения „=О и =>м можно распространить на СУ-схемы, договорившись, что (а, р) — >(у, 5) тогда и только тогда, когда (и р) ь" (у, б), причем на каждом шаге этого вывода заменяется самый левый нетерминал первой компоненты выводимой пары и примененные при этом правила, из которых удалены элементы перевода, образуют последовательность и. Аналогично длЯ СУ-схемы определяется »„.

Определение. СУ-схема называется семантически однозначной, ес«ш в пей нет двух различных правил вида А — и () и А — а у В семантически однозначной Су-схеме для каждого правила вхо н"одной грамматики есть точно один элемент перевода. Теорема 3,14. 17усть Т = ()ч, Х, А, 11, В) — семантически одно"Ростая СУ-схел«а, Тогда суи«гствует такой ДМП-пргРазователь Р, что т, (Р) = ((и, У) ) (5, В) м==;>(х, У) длл некотоРой йепочки х а т.'). ГЛ. 3. ТЕОРИЯ ПЕРЕВОДА ».Е. СИНТАКСИЧЕСКИЙ АНАЛИЗ Доказательство, Пусть Р=((ч), (1 " * Р) !е!0Л Л б, 11, 5, 8), где 1, ..., р — номера правил входной грамматики, а А определяется так: (1) Пусть А — а — правило входной грамматики с номером 1 и Л вЂ” а, () — -единственное соответствующее правило схемы, Тогдз б(у, 1, А) =(д, )\, е).

(2) б(д, е, Ь) =-(д, е, Ь) для всех Ь ЕЛ. МП-преобразователь Р детерминированный, потому что пря. вила (1) применяется только тогда, когда йаверху магазина находится нетерминал, а правило (2) применяется только тогда, когда наверху выходной символ. Корректность преобразова. тела Р следует из утверждения, которое легко доказывается индукцией: (д, и, Л, е) ) — '(д, е, е, у) тогда и только тогда, кот.

да существует такая цепочка хЕТ', что (А, А)п=!>(х, у). Доказательство оставляем в качестве упражнения. П Чтобы описать СУ-перевод, не выполнимый никаким ДМП. преобразователем, отображающим (,о, где 6 — входная грамматика, в соответствующие выходы этого перевода, нам понадобится следующая лемма. Лемма 3.13. Не суи(ествует такого ДМП-преобразователя Р, что т(Р)=((пю, ввсв) (вЕ(а, Ь)"). До к азател ьство. Здесь символ с играет роль правого концевого маркера. Допустим, что Р для входа в выдает некоторую непустую цепочку, скажем йх, где й Е (а, Ь).

Пусть «Гозиачает символ, противоположный «(. Посмотрим, как работает Р с цепочкой Ыс в качестве входа. Он должен выдать некоторую цепочку, но эта цепочка должна начинаться символом а. Следовательно, Р не отображает Ыс в йвяехеч(, как требуется. Таким образом, Р не может ничего выдать на выходе, пока не будет достигнут правый концевой маркер с.

В этот момент Р будет находиться в состоянии д и хранить в магазине цепочку о» Неформально и должна быть по существу цепочкой в, и тогда, стирая а, Р может выдать вя. Но стоит ему стереть ее, кях он уже нс может «вспомнить» всю цепочку в, чтобы напечатать ее на выходе. Формальное доказательство леммы аналогичвв рассуждениям в примере 3.26. Здесь мы дадим набросок доказя. тельства.

Рассмотрим входные цепочки вида в=а'. Существуют такие числа ! и Ь, состояние е) и цепочки а и (), что, прочитав на входе аГЕ«АС, Р ПОМЕЩаЕт В Матаэнн арп И ПЕРЕХОДИТ В СОСТОЯНИЕ Ч' Тогда Р должен стереть содержимое магазина вплоть до а к том)' моменту, когда он выдает вне. Но так как и от вне зависит, то выдать в уже невозможно, !") Теорема 3.13 Существует простая СУ-схелга Т = ,(Ь( ~, б, )е>, 5), для которой нет такого ДМП-преобразсватеея Р, что т(Р)=((яя, х)~(5, 5)==;>п(в, х) для некоторой цепочки в).

доказательство. Пусть Т определяется правилами (1) 5 5а, а5а (2) 5 — 5Ь, Ь5Ь (3) 5 — с, с Тогда 1~==3(1+2)', где б — входная грамматика. Если положить Ь(1)=а и Ь(2)=Ь, то требуемым переводом т(Р) будет ((3а, Ь(а)ясй(а)) ~ а Е(1, 2)'). Если бы дМП-преобразователь Р, о котором говорится в теореме, существовал (с правым концевым маркером или без него), то можно было бы построить ДМП-преобразователь, определяющий перевод ((вс, ввсв) (вЕ (а, Ь)'), а это противоречит лемме 3.13.

Итак, мы заключаем, что интересны как левый, так и правый анализ. Оба онн будут изучаться в последующих главах. Синтаксический анализ другого типа, обладающий чертами и нисходящего, и восходящего анализа,— анализ по левому участку— рассматривается в упражнениях. 3.4.5. Грамматическое покрытие Т! . усть 6,— КС-грамматика. Можно считать, что грамматика б, подобна б, с точки зрения процесса разбора, если 1.(бе) =-Т.(61) и левый и/или правый разбор цепочки, порождаемой грамма- тикой б„можно выразить в терминах ее разбора в грамматике 6,.

В таком случае говорят, что б, покрывает 6,. Покрывающие грамматики можно использовать несколькими способами. Напри- мер, если язык программирования описан «трудно» анализируемой гРамматико, матик, ана кой, то было бы желательно найти покрывающую грам- У. анализируемую «легче». К тому же несколько изучаемых далее алга тика нахо ит ритмов разбора работают только тогда когда грамма- мальиой о, одится в некоторой нормальной форме, например в норф рме Хомского или в такой, где нет левой рекурсии.

, — Роизвольная грамматика, а 6, — ее какая-то нормаль- сли 6 Р, то желательно, чтобы разборы в грамматике 6 можно ная фо ма восстановить по разборам в 6 . В этом случае нет ыло легко 1 ости уметь восстанавливать разборы в б, по разборам ходимос е 1 ля формального определения того, что подразумевается под нием» разборов в одной грамматике по разборам становле оспользуемся понятием гомоморфизма между разбораРугой, во представля ляющнми собой цепочки определенного вида.

Можно ГЛ, Э. ТЕОРИЯ ПЕРЕВОДЛ привлечь и другие, более сильные, отображения; некоторые иэ них рассматриваются в упражнениях. Определение. Пусть 6,=(!>)„Х, Р„Ь;) и 6,— ()4„Т,, Р„5,) КС-грамматики и й(б,) =-1,(б,). Будем говорить, что 6., лееопэ. крывает б„если найдется такой гомоморфизм й, отображающяй Р,вР;,что (1) если 5,„=01е, то 5,„1я1=>пй (2) ДлЯ кажДого и, Дла котоРого Ь;я=>п|, сУЩествУет такса разбор и, что 5„,;-Фп| и й(п ) =-и. Будем говорить, что б, праеопокрыеает б„если найдется такой гомоморфизм й, отобража|ощий Р, в Р„, что (1) ЕСЛИ 5,-— >„|Э, тО 5|=ФЛ|п|ПЛ (2) для каждого и, для которого 5,=О ю, существует такой разбор и', что 5|~, ю и й(и')=и.

Пример 3.28. Пусть 6,— грамматика с правилами (1) 5 — 051 (2) 5 — 01 а б,— эквивалентная ей грамматика в нормальной форме Хо>|. ского с правилами (1) 5 — АВ (2) Ь' — АС (3)  — 5С (4) А — 0 (5) С- ! Мы видим, что 6, левопокрывает б„соответствующий гомо. морфнзм определяется равенствами й(1) — -- 1, й(2) = 2, й(3) =-й(4) =й (5) =-е. Например, 5 мммь=>е, 0011, й(1432455) = 12 и 51,=!>е, 0011 6, также и правопокрывает б„причем подходит тот же гоме- морфизм й.

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

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

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

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