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

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

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

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

Доказательство. Если х~е, то по следствию ! !Н)<с'(х). Так как !х!<!Н4), то !л)<с')4о!. В качестве упражнения можно показать, что если х=е, то !л)<с'. Поэтому в любом случае )л)<су(!4о)+1). Г2 Теорема 4.2. Суи(ествует тпкая константа с, что алгоритм 4.1 для входной цепочки и4 длины и) 1 использует не более сл ячеек, если для каждого символа из обеих магазинных цепочек, входяилих в конфигурации, требуется только одна ячейка. Д о к а з а т е л ь с т в о, Нс считая символа Ч, содержимое магазина Б2 является частью левовыводимой цепочки а, для ко. торой Я к==а а, где я — частичный левый разбор, совместимый с и1.

В силу следствия 2 леммы 4.4 (л(<й((4о)+!). Так как длины правых частей правил ограничены, скажем величиной 1, то ) и! <Ы()4в)+!) <2Ы) ш(. Следовательно, длина магазина Б2 превосходит 2Ы )4о)+1. Магазин ! 1 содержит часть левовыводимой цепочки и (весь терминальный префикс или его часть) и (л) индексов. В силу следствия 2 леммы 4.4 длина магазина ТА не превосходит 2у(1+1)(!в~+!). Таким образом, сумма длин обоих магазинов пропорциональна )4о). и Теорема 4.3.

Суи(ествует шакал константа с, что алгоритм 4.1 лри обработке входной цепочки и4 длины л"'-! делает не более с" элементарных операций, лри условии что вычисление одного шага алгоритма 4.! требует фиксированного числа элементарных операций. Доказательство. В силу следствия 2 длина каждого частичного левого разбора, совместимого с ш, не превосходит сгл для некоторого с,.

Таким образом, число различных частичных левых разборов, совместимых с и4, не больше с,", где с,— некоторая константа. Алгоритм 4.1 в промежутках между конФигурациями, в которых содержимое магазина П описывает 335 ГЛ. 4. ОБЩИЕ МЕТОДЫ СИНТАКСИЧЕСКОГО АНАЛИЗА 4.!. СИНТАКСИЧЕСКИИ АНАЛИЗ С ВОЗВРАТАМИ последовательные частичные левые разборы, вычисляет самое большее и конфигураций. Общее число конфигураций, вычисзяемых алгоритмом 4.1, не превосходит, таким образом, пс,". Из формулы бинома непосредственно следует, что пс," .(с,+1)'. Остается выбрать с=(с,+1)и, где и — максимальное число злсментарных операций, требуемых для вычисления одного шага алгоритма 4.1. С) Теорему 4.3 в некотором смысле нельзя усилить, т.

е. су>цествуют пе леворекурсивные грамматики, при работе с которыми алгоритм 4.1 затрачивает экспоненциальиое время, по- :кольку эти грамматики имеют с" частичных левых разборов, совместимых с некоторыми цепочками длины и. Пример 4.3. Пусть 6=((5), (а, Ц, Р, 5), где Р состоит из правил 5- а55)е. Пусть Х(п) — число различных левых разборов цепочки а", а У(п) — число частичных левых разборов, овместимых с а". Функции Х(п) н 1'(п) определяются рскуррентными соотношениями (4.1,2) Х (О) = 1 л-! Х (и) = ~ч ', Х (!' )Х (и — 1 — !) 4=.0 (4,1,3) 1'(О) =2 Р (и) = 1 (п — 1) + ~ч", Х (!) «'(и — 1 — !) >=О Равенство (4.1.2) вытекает нз того, что каждый вывод цепочки а" при и)! начинается правилом 5- а55.

Остальные п — 1 символов а можно так или иначе распределить 'между двумя нетерминаламн 5. В равенстве (4,1.3) У(п — 1) отражает возможность того, что после первого шага 5=~а55 второй негерминал 5 больше не участвует в выводе, а суммирование отражает возможность того, что из первого 5 выводится а' для некоторого !. Формула 1'(О) =-2 вытекает из того, что пустой вывод н вывод 5=!>е совместимы с цепочкой е.

Из упр. 2.4.29 получаем Х(п)= — ( ") гак что Х(п)=>:2" '. Позтому л-! 1'(и) =. 1'(и — 1)+ ~~.", 2!"'1'(и — ! — !) >=О откуда, разумеется, следует„что 1'(и) =г: 2". зз6 Этот пример выявляет главную проблему, возникающую при нисходяц«ем анализе с возвратами. Число шагов, необходимых для разбора с помощью алгоритма 4.1, может быть огромным, Нзвестно несколько приемов, помогающих слегка ускорить этот алгоритм.

Мы укажем некоторые из них. (!) Можно упорядочить правила так, чтобы наиболее вероятные альтернативы испытывались первыми. Однако это не поможет в тех случаях, когда входная цепочка синтаксически неправильна, так что придется перебрать все возможности. Определение. Для КС-грамматики 6=((л(, т, Р, 5) определим функции Г1115Т»(а) = (х (а=Э! х() и ! х ) =й или сл=~* х и ) х ( < й) Ниаче говоря, множество Г1к5Т»(а) состоит из всех терминальных префиксов длины й (или меньше, если из 4» выводится терминальная цепочка длины, меньшей й) терминальных цепочек, выВоДИМЫХ ИЗ 4». (2) Можно заглядывать вперед на следующие й входных символов, чтобы определить, надо ли использовать данную альтернативу.

Например, с атой целью можно для каждой альтернативы а заготовить множество Р(ПЭТ»(а). Если внемне содержится ни один префикс оставшейся части входной цепочки, можно сразу отвергнуть и и опробовать следующую альтернативу. Этот прием очень полезен, когда данная входная цепочка принадлежит Е(6) и когда оиа не принадлежит 1, (6). В гл. 5 мы увидим, что для некоторых классов грамматик с помощью заглядывания вперед можно полностью устранить необходимость возвратов, (3) Можно добавить некоторую «бухгалтери«о» (учет), позволяющую ускорить возвраты. Например, если мы знаем, что последние и примененных правил не имеют прил«енил«ых следуюп«их альтернатив, то в случае неудачи можем при возврате пропустить зги альтернативы, сразу вернувшись к тому месту, где есть применимая альтернатива. (4) Можно ограничить количество допустимых возвратов.

Методы такого рода излагаются в гл. 6. Другая трудная проблема, связанная с возвратным анализом, †е слабые возможности в смысле локализации оп«ибок. сели входная цепочка синтаксически неправильна, то компиля- ТОР должен объявить, какие входные символы причастны к ошибке. Кроме того, когда найдена ошибка, компилятор должен исправить ее так, чтобы анализ мог продолжаться н Об>нару- живать другие ошибки, если они попадутся. зз7 338 339 гл. и ошцие методы синтдксического Анялизд Если входная цепочка построена синтаксически неправильно, то алгоритм с возвратами просто объявит об ошибке, оставив входной указатель на первом входном символе. Чтобы получи~ь более подробную информацию об ошибках, в грамматику можно вставить специальные правила, порождающие ошибки.

Вти правила применяются для порождения цепочек, содержащих распространенные синтаксические оп|ибки, и благодаря им синтаксически неправильные цепочки становятся правильными с точки зрения новой грамматики. Появление в выходе номера такого правила служит сигналом, локализующим о«пибку во входной цепочке. Однако с практической точки зрения алгоритмы синтаксического анализа, излагаемые в гл. 5, обладают большими способностями к обнаружению ошибок, чел«возвратные алгоритмы с правилами, порождающими ошибки. 4 т.а. Восходящий разбор Существует общий подход к разбору, в некотором смысле противоположный подходу, принятому при нисходящем разборе.

Алгоритм нисходящего разбора можно представлять себе как построение дерева разбора методом проб и ошибок, которое начинается сверху в корне и продолжается вниз к листьям, В противоположность этому алгоритм восходящсго разбора начинает с листьев (т. е. с самих входных сяхшолов) и пытается построить дерево разбора, восходя от листьев к корню. Ь)ы опишсм восходящий разбор в виде алгоритма синтаксического аналкза, который называют алгоритмом типа «перенос— свертказ.

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

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

Если здесь возможна другая свертка, надо испытать ее. Рассмотрим грамматику с правилами  — АВ, А аЬ и  — аЬа. Пусть аЬаЬа — входная цепочка. Сначала перенесем в магазин первый символ а. Так как свертка пока невозможна, «Л. СИНТАКСИЧЕСКИЙ АНЛЛИЗ С ВОЗВРЛТАМН перенесем в магазин символ Ь. Затем цепочку аЬ, расположенную наверху магазина, заменим на А. Получили частичное дерево, показанное на рис.

4.6, а. Так как А нельзя больше свернуть, перенесем в магазин а. Свертка опять невозможна, поэтому гперенесем Ь. Тогда можно свернуть аЬ к А. Теперь получаем частичное дерево на рис. 4.6, б. Переносим в магазин символ а и обнаруживаем, что свертка невозможна. Возвращаемся к последней позиции, в которой з Ряс, 4,0. Частяяяые деревья восходящего разбора. была сделана свертка, а именно когда в магазине была цепочка АаЬ (здесь Ь вЂ” верхний символ) и мы заменили аЬ на А, с частичное дерево было таким, как на рис. 4.6, а.

Так как другая свертка здесь невозможна, сделаем перенос вместо ~~~ртки. В магазине окажется Лаба. Тогда можно свернуть аЬа к В, получив при этом рис. 4.6, г. Далее заменим АВ на В и получим завершенное дерево, показанное иа рис. 4.6, г. агат метод можно рассматривать как процедуру прослеживания всевозможных последовательностей тактов недетермннированного правого анализатора для данной грамматики. Однако так же, как в случае нисходящего разбора, надо избегать ситуаций, в которых число возможных последовательностей тактов бесконечно ГЛ. 4. ОБЩИЕ МЕТОДЪ| СИНТАКСИЧЕСКОГО АНАЛИЗА 4.!.

СИНТАКСИЧЕСКИЙ АНАЛИЗ С ВОЗВРАТАМИ Одна такая ловушка оказывается тогда, когда грамматика содержит циклы, т. е. выводы вида А=о+А для некоторого нетерминала А. Число частичных деревьев может быть в этом случае бесконечным, так что грамматики с циклами мы исключим из рассмотрения, Трудности создаются также е-правилами, так как тогда можно проделать произвольное число сверток, при которых пустая цепочка «свертывается» к кетерминалу. Восходящий разбор можно расширить так, чтобы он охватывал грамматики с е-правилами, но пока для простоты мы предпо. читаем обходиться без е-правил, Алгоритм 4.2.

Восходящий разбор с возвратами, Вход. КО-грамматика П>=(«~, Х, Р, 5) без циклов и е-правил (все ее правила занумерованы от 1 до р) и входная цепочка п>=а>а«...а„(н) 1). Выход. Один обращенный правый разбор, если он существуег, и слово «ошиб>ка» в противном случае. Метод. (1) Произвольным образом упорядочить правила.

(2) Алгоритм будет изложен в терминах 4-компонентных конфигураций, подобных тем, что использовались в алгоритме 4.!. В конфигурации (з, |, а, ()) (а) е представляет состояние алгоритма, (б) | представляет текущую позицию входного указателя (предполагается, что (о+1)-м входным символом служит правый концевой маркер $), (в) а — содержимое магазина В! (верх которого расположен справа) (г) (« — содержимое магазина А2 (верх которого расположен слева).

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

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

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

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