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

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

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

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

Как и раньше, алгоритм может находиться в одном из трех состояний д, Ь или Е В магазине Г.1 будет храниться цепочка терминалов и нетерминалов, из которой выводится часть входной цепочки, расположенная слева от входного указателя. В магазине (.2 будет храниться история переносов и сверток, необходимых для получения из входной цепочки содержимого магазина Г.!.

(3) Начальная конфигурация алгоритма — (д, !$, е). (4) Сам алгоритм работает так, Начинаем с попытки применить шаг 1. Шаг 1. Попытка свертки (д, |, ар, у) « — (д, 1, аА, )у) 340 при условии, что А — р †прави из Р с номером 1 и р †первая правая часть в линейном упорядочении, определенном в (1), которая является суффиксом цепочки а«).

Номер этого правила записывается в 52. Если шаг 1 применим, повторить его. В противном случае перейти к шагу 2. Шаг 2. Перенос (д, !', а, у) «-(|1, !'+1, аоо зу) при условии, что !'Фн-«-1. Перейти к шагу !. Если ! =- и+1, перейти к шагу 3. Г!ри выполнении шага 2 !'-й входной символ переносится в верхнюю часть магазина 51, позиция входного указателя увеличивается и в магазин Г.2 записывается з, чтобы указать, что сделан перенос. Шаг 3. Допускание (д, и+1, $5, у)« — (г, и+1, $5, у) Выдать Ь (у), где Ь вЂ” гомоморфизм, определенный равенствами Ь(в) =в, Ь ()) =1 для всех номеров правил, Ь(у) — обращенный правый разбор цепочки ц>.

После этого остановиться. Если шаг 3 неприменим, перейти к шагу 4. Шаг 4. Переход в состояние возврпо>а (д, и+1, а, у) « — (Ь, и+1, а, у) при условии, что аФ$5, Перейти к |пагу 5. Шаг 5. Возврат (а) (Ь, |, аА, (у) « — (>), |, а'В, йу) если А- () — правило из Р с номером 1', а следующим правилом в упорядочении (!), правая часть которого является суффиксом цепочки ар, является правило В- р' с номером Ь. (Заметим, что а()=а'р'.) Перейти к шагу 1. (Здесь происходит возврат к предыдущей свертке и делается попытка свертки с помощью следующей альтернативы.) (б) (Ь, и+1, аА, )у) «-(Ь, и+1, а«), у) если А р — правило из Р с номером 1' и для цепочки ар пе остается никакой другой свертки, Перейтп к шагу 5. (Если других сверток не существует, надо «взять назад» данную свертку н продолжать возврат, оставляя входной указатель на позиции и+ 1.) (в) (Ь, >, аА, 11!) « — (|1, !+1, ара, ву) если ! Фа+1, А — 5 — правило из Р с номером !' и для ар не остается никакой другой свертки.

Здесь символ а=-а; перено- Гл. 4. ОБщие методы синтАксическОГО АньлизА сится в магазин П, а символ з поступает в Е2. Перейти к шагу 1. (Мы вернулись к предыдущей свертке и„так как других сверток иет, попробуем сделать перенос,) (г) (Ь, 4, аа, зу) «-(Ь, ! — 1, а, у) если наверху магазина Е2 находится символ переноса з, (Здесь в позиции ! исчерпаны все альтернативы и надо «взять назад» операцию переноса.

Входной указатель сдвигается влево, терминальный символ устраняется из Е!, а символ переноса з— из Е2). Если этот шаг невыполним„объявить об ошибке. Пример 4.4. Применим описанный алгоритм восходящего разбора к грамматике С с правилами (!) Е- Е+ Т (2) Е- Т (3) Т вЂ” ТБР (4) Т- Р (б) Р- а Если наверху магазина Ы появится Е+ Т, то сначала попытаемся сделать свертку, используя Е -- Е+ Т, а потом — используя Š— Т. Если же появится Т ь Р, то сначала попробуем Т вЂ” ТБР, а потом Т вЂ” Р, Для входа а»а восходящий алгоритм пройдет через конфигурации 2, $а, 2, $Р, 2, $Т, 2, $Е, 3, $Е», Е» Зла (д, 1, $, е) «- (д, « — (ч «-(у'.

«-(4,' « — (ч « — (у «-(у,' «-(у', 'Г- (4 «- (ь, « — (Ь, « — (» 'à — (Ь ; — (ь, «-(Ь,' «-(у', (4 «-(4', «- (4 « — (ч «- (( 4, $ а, 4, $Е»Р, 4, $Е»Т, 4, $Е»Е, 4, $Е«Е, 4, $Е»Т, 4, $Е»Р, 4, $Е»а, 3, $ЕА, 2, $Е, 3, БТ», 4, $Таа, 4, $Т»Р, 4, $Т, 4, $Е, 4, $Е, з) Бз) 45з) 245з) з245з) зз245з) бзз245з) 45зз24бз) 245зз245з) 245зз245з) 45зз245з) 5зз24бз) зз245з) з245з) 245з) з45з) зз45з) 5зз45з) ЗБАБ45з) 235зз45з) 235зз4бз) (З 4.!, синтхкс!4'!ес!«Нн АнАлиз с ЕОЗВРАТАми Корректность алгоритма 4.2 можно доказать способом, аналогичным тому, которым было показано, что нисходящий алгоритм работает правильно.

Мы дадим здесь лишь набросок доказательства, оставляя ббльшую часть деталей в качестве упражнения. Определение. Пусть С=(х!«, Х, р, $) — КС-грамматика. Будем называть п частичным правым разбором, совместимым с «с, если существуют такие а Е (Ь) 0 Х)' и префикс х цепочки иц что а =>„я х. Лемма 4.5. Пусть С вЂ” КС-грамматика без циклов и без е-правил, Тогда найдется такая констан!па с, что ~«исло частичных правых разборов, совместимых с входной цепочкой длины и, не превосходит с". Д о к а з а т е л ь с т в о.

Упражнение. Теорема 4.4. Алгоритм 4.2 правильно находит правый разбор цепочки и!, если он су«цествует, и сигнализирует об ошибке в противном случае, До к аз а тел ь от в о. По лемме 4.5 число частичных правых разборов, совместимых с входной цепочкой, конечно. В качестве упражнения предлагаем показать, что пока алгоритм 4.2 не найдет разбор входной цепочки, он перебирает в естественном порядке все частичные правые разборы. А именно, каждый частичный правый разбор кодируется последовательностью индексов правил и символов переноса (з), и алгоритм 4,2 рассматривает все такие кодирующие последовательности в лексико- графическом порядке.

Зтот лексикографический порядок Определяется порядком символов, в котором з находится па последнем месте, а упорядочение индексов правил задается шагом 1 алгоритма 4,2. Заметим, что не каждая последовательное!ь таких символов будет кодом совместимого частичного правого разбора. [3 Так же, как для алгоритма 4.1, можно показать, что длины магазинных списков в конфигурациях алгоритма 4.2 линейно зависят от длины входной цепочки.

Теорема 4.5. Пусть для каждого символа из магазинных цепочек, участвую«цих в конфигурациях алгоршпма 4.2, требуется только одна ячейка, и пусть число влементирных операций, необходимых для вьыисления одного и!ага алгоритма 4.2, ограничено. Тогда для входной цепочки длины и алгоритму 4,2 требу!отся ся емкость па,ияти с,п и время с",, где с, и с,— некоторые константы. Доказательство. Упражнение. П ГЛ.

4, ОБЩИЕ МЕТОДЫ СИНТАКСИЧЕСКОГО АНАЛИЗА Известно несколько модификаций основного алгоритма восхоеящего разбора, ускоряющих его работу. (1) Можно добавить,,заглядьГвание вперед" так, что если збнаруживается, что следующие й символов справа от входного указателя не могут следовать за А ни в какой правовыводимой цепочке, то в этот момент не надо делать свертку, соответствуощую А-правилу. (2) Можно попытаться упорядочить сьэртки так, чтобы наиболее вероятные из них делались первыми.

(3) Можно добавить информацию, позволяющую определять, приведут ли некоторые свертки к успеху. Например, если первая свертка использует правило А- а, ... а„, где а,— первый входной символ, и мы знаем, что нет такой цепочки уЕХ'„что 5=О'Ау, то эту свертку можно сразу исклк>чить. Вообще мы хотим быть уверены в том, что если 8а — содержимое магазина Е1, то а — префикс правовыводимой цепочки.

Хотя проверить это, вообще говоря, сложно, некоторые понятия (такие, как предшествование, обсуждаемое в гл. 5), помогают исключить многие цепочки а, которые могли бы появиться в Е!. (4) Можно модифицировать алгоритм так, чтобы ускорить возвраты.

Например, можно записать информацию, позволяющую сразу восстановить предыдущую конфигурацию, в которой была сделана свертка. Некоторые из этих соображений изучаются в упр. 4.!.12— 4,!.14 и 4.1.25. Замечания по поводу обнаружения н исправления ошибок, относящиеся к нисходящему возвратному алгоритму, применимы и к восходящему алгоритму. эпэджнения 4.1.1, Пусть 6 определяется правилами 5 АЗ(а А- ЬЗА!Ь Какую последовательность шагов сделает алгоритм 4.1, если альтернативы рассматриваются в том порядке, как они записаны, а входной цепочкой является (а) Ьа? (б) ЬаЬа? Какие будут последовательности шагов, если альтернативы рассматриваются в обратном порядке? 4.1.2.

Пусть 6 состоит из правил 5- ЗА~А А- ЛА ~Ь 344 упРАжн е ния Какую последовательность шагов сделает алгоритм 4.2, если более длинная альтернатива считается первой, а входной цепочкой является (а) аЬ? (б) аЬЛЬ? Что будет, если первой считать более короткую альтернативу? 4.1.3. Покажнте, что каждая КС-грамматика без циклов, не порождающая пустой цепочки, правопокрывается грамматикой, для которой работает алгоритм 4.2, но может не левопокрываться грамматикой, для которой работает алгоритм 4.1.

*4.1.4. Покажите, что рекуррентные соотношения Е? (1) = 1 Е> (Г() = (Е! (~ — 1)')+ 1 определяют функцию 0 (Г() = ~ю (, где й — некоторое вещественное число, а 1х! — наименьшее целое число» х. Здесь й= 1,502837.... 4.1.6. Дополните доказательство следствия 2 леммы 4.4, 4.1.6. Модифицируйте алгоритм 4.1 так, чтобы можно было отказаться от использования альтернативы, если из левовыводимой цепочки, получающейся после ее применения, нельзя вывести Ь очередных входных символов, где Й вЂ” фиксированное число. 4.1.7. Модифицируйте алгоритм 4.1 так, чтобы он работал для произвольной грамматики, наложив ограничения на рост длин магазинов Е1 и Е2.

**4.1.8. Дайте необходимое н достаточное условие, которому должна удовлетворять входная грамматика для того, чтобы алгоритм 4.1 никогда не оказывался в состоянии возврата. 4.1.9. Докажите лемму 4.5. 4.1.10. Докажите теорему 4.5. 4.1.11, Моднфицируйте алгоритм 4.2 так, чтобы он работал для произвольной грамматики, наложив ограничения на длины магазинов Е! и Е2. быст 4 1.12. Модифицируйте алгоритм 4.2 так, чтобы он работал стрее, введя в него проверку того, что частичный правый Разбор вместе с частью входной цепочки, расположенной справа От указателя, не содержат ни одной из цепочек длины й,'котоРые не могут быть частью правовыводимой цепочки.

4,! 1 18. Модифицируйте алгоритмы 4.1 и 4.2 так, чтобы они могли ли возвращаться к любой специально выделенной конфнгу- ГЛ. 4, ОБЩИЕ МЕТОДЫ СИПТАКСИ'!ЕСКОГО АНАЛИЗА УПРАЖНЕИИЯ рации с помощью конечного числа разумно определенных элементарных Операций. "*4.1.14. Найдите необходимое и достаточное условие, которому должна удовлетворять грамматика, чтобы алгоритм 4.2 работал на ней без возвратов. То же для алгоритма, модифицированного, как в упр. 4.1.12. 4.1.15. Найдите грамматику без циклов и без е-правил, для которой алгоритм 4.2 тратит экспоненциальное время.

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

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

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

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