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

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

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

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

Тзк как нетерминал А сообщил об успехе своего первого вызова, он уже не будет вызываться для проверки второй а.чьтернативы. Заметим, что этой трудности можно избежать, записав А-альтернативы в обратном йорядке А аЬ)а Теперь изложим язык нисходящего разбора с ограниченными возвратами (сокращенно ЯНРОВ), который можно использовать для описания процедур разбора указанного типа. Операторсд! (нли правилож) этого языка называется цепочка одного нз видов А — ВС!'17 илн А а ') Здесь снова вовнкквет нетст»укндей гремматнке 6, в рввд. 5.4Л.

— Прил. перев. проблема вдекввтносгн распознавателя А«о соог. уяомнявна!анен к дополненнк к равд. 5.1 н ! 7 А. Ако. Дм. Ульм»в, г. ! 5!3 Различие между таким алгоритмом н алгоритмом 4.1 состоит, в том, что если последний потерпит неудачу при попытке найтй полный разбор, в котором из ау выводится а!...а„, то он вернется назад, станет испытывать выводы, начинающиеся правилами А а „„А а,, и т. д., и при этом, возможно, получит другой префикс цепочки а,...а„, выводимый из А. Наш новый алгоритм так ие делает.

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

Мы ие будем, следова. тельно, связывать такой алгоритм с конкретной КС-грамматикой, а будем трактовать его сам по себе как формализм, предназначенный для определения и синтаксического анализа языка. Возьмем конкретный пример. Если правила 5- Ас Л вЂ” а(аЬ Гл. 6, АлГОРитмы РА3БОРА с ОГРАиичгииыми возвРАТАми где Л, В, С и Р— нетерминалы, а а — терминал, пустая цепочка или специальный символ 7 (обозначающий неудачу). Определение. ЯНРОВ-программой Р называется четверка (г), Х, 77, В), где (1) )л( и Х вЂ” конечные непересекающиеся множества иетерминалвв и терминалов, (2)  — последовательность ЯНРОВ-операторов, содержащая для каждого Л Е)л) пе более одного оператора с левой частью А (слева от стрелки), (3) 3 б М вЂ” начальный символ.

ЯНРОВ-программу можно связать с грамматикой в специальной нормальной форме. Оператор вида А — ВС!Р соответствует двум правилам А ВС и А — Р, из которых первое всегда испытывается первым. Оператор вида А-- а соответствует правилу А — а, когда аЕХ или а=-е. Если а=7, то нетерминал А имеет специальный смысл, который мы разъясним позже.

ЯНРОВ-программу можно описать иначе как множество процедур (нетермииалов), вызываемых рекурсивно для некоторых входных цепочек в качестве аргументов. Выходом, или результатом, вызова нетермииала будет либо неудача (ии один префикс входной цепочки не подходит даииол!у нетермииалу), либо успех (некоторый префикс входной цепочки подходит ему). Результатом вызова оператора вида Л вЂ” ВС/Р для входной цепочки 6е будет следующая последовательность вызовов процедур: (!) Сначала Л вызывает В для входной цепочки и!.

Если и!--хх' и цепочка х подходит нетерминалу В, то В сообщает об успехе, т. е. результатом вызова В будет успех. После этого А вызывает С для цепочки х'. (а) Если х'=уг и д подходит С, то С сообщает об успехе. Тогда Л тоже сообщает об успехе и о том, что ему подходит префикс ху цепочки и!. (б) Если никакой префикс цепочки х' не подходит С,.то С ссюбщает о неудаче. Тогда А вызывает Р для цепочки 6е. Заметим, что в этом случае успех вызова В аннулируется. (2) Если А вызывает В для цепочки и и оказывается, что никакой префикс цепочки и! Ие подходит В, то В сообщает о неудаче. Тогда А вызывает Р для цепочки и!.

(3) Если Р был вызван для 6е= ио и цепочка и подходит Р, то й сообщает об успехе. Тогда А тоже сообщает об успехе и о том, что ему подходит префикс и цепочки 6е. (4) Если Р был вызван для цепочки ш и никакой префикс цепочки ш ему не подходит, то Р сообщает о неудаче. Тогда А тоже сообщает о неудаче. 6. !. нисходящий ~лзвоР с Огялничзнными возБРАтлми Заметим, что Р вызывается, когда не оба вызова В и С оказались успешными.

В дальнейшем мы исследуем другую систему разбора, в которой Р вызывается только тогда, когда вызов В оканчивается неудачей. Заметим, что если В и С привели к успеху, то альтернатива Р не вызывается. Зта особенность отличает ЯНРОВ-программу от общего алгоритма нисходящего разбора из гл. 4. С операторами вида А - а, А =е и А = 7 обращаются так: (1) Если есть правило А — а, в котором ОЕАР, и А вызывается для цепочки, начинающейся символом а, та цепочка а подходит А, и А сообщает об успехе.

В противном случае А сообщает о неудаче. (2) Если есть правило А- е, то вызов А всегда успешен и пустая цепочка всегда подходит А. (3) Если есть правило А 7, то вызов А всегда оканчивается неудачей. Определим формально, как иетерминал «действует на входную цепочку». Определение, Пусть Р = (Х, Т, В, В) — ЯНРОВ-программа. Зададим отношения =>Р между нетерминалами и парами вида (х)у, г), где х и у — цепочки из Х', а г — либо в (обозначает успех), либо 7 (обозначает неудачу). Метасимвол 1 используется, для указания позиции текущего входного символа. Индекс Р будем опускать всюду, где можно. (1) Если А — еЕ В, то А =>! ()и!, З) для всех и!~ Х'.

(2) Если А !'ЕВ, то А '=>'(1щ 7) для всех и!йХ'. (3) Если А а~)г и аЕХ, то (а) А =Зл(а1х, в) для всех хЕХ', (б) А ~»()у, )!) для всех у ЕЕ' (включая е), не начинающихся с а. (4) Пусть А- ВС/Р~)Г. Тогда (а) А =э"+"+" (ху)г, в), если (1) В=>'"(х)уг, з), (й) С~" (д(г, з); (б) А ~!(И!о, з) для 1'=и+и+р+1, если (!) В~ (х1у, з), (!!) С=~" ()д, й. ' (ш) Р=ьв(и!и, з), где ии ку; (в) А =->6()ху, 7) для (=т+и+р+1, если (1) В =>и (х ! у, в), (!!) С=э" ()у В (!!1) Р=ьв((ху, 7); 17» 515 Гл.

6. Алгогитмы РАВВОРА с ОГРАниченными ВОВВРАтлми (г) А ~ ""(х)у, з), если (1) В=> ()ху, 1), (П) 17 =Э" (х 1 у, з); (д) А => ""()х, 1), если (!) В «'" (1 х, )'), (П) 17 ~в (1 х, 1). (6) ОТНОШЕНИЕ =>в ВЫПОЛНяЕтСя ТОЛЬКО В СЛуЧаяХ, ОГОВОрги- ных в (1) — (4). Пункт (4а) учитывает тот случай, когда В и С оба приводят к успеху. В (4б) и (4в) В успешен, но С неудачен.

В последних четырех случаях вызывается 17, и это оканчивается либо успе. хом, либо неудачей. Заметим, что число у стрелки указывает количество ввызовов», сделанных до того, как получен,результат. Еще отметим, что если А ~в(х1у. Г), то х=е, т. е. в случае неудачного вызова входной указатель переставляется туда, где ои находился перед вызовом. Положим А.-4 (х1у, Г) тогда и только тогда, когда А «л(х)у, Г) для некоторого п 1. Язьском, определяемым программой Р, назовем множество Б(Р) =(нс)5 М(ис1, з) и исЕХв).

Пример 6.1. Пусть Р =((5, А, В, С), (а, Ь), Р, 5) — ЯНРОВ- программа, где )лс состоит из операторов 5 АВ1С А — а В СВ1А С Ь Исследуем поведение программы Р на входной цепочке аЬа, используя введенные выше обозначения. Вначале„благодаря правилу 5- АВ1С, 5 вызывает А для цепочки ада.~А распознает первый входной символ и сообщает об успехе. Учитывая (3) предыдущего определения, можно писать А =>с (а', Ьа, з). Далее 5 вызывает В для цепочки Ьа. Так как для В есть правило В- СВ1А, нужно заняться поведением С на цепочке Ьа, Оказывается, что Ь подходит С, так что С сообщает об успехе. В соответствии с (3) пишем С =>с(Ь) а, з).

Затем В рекурсивно вызывает себя для цепочки а. Однако С терпит неудачу на а, и потому С =>с(1а, 1). Тогда В вызывает А для цепочки а. Так как а подходит А, то А =Рс(а 1, з). Так как вызов А успешеи, то второй вызов В тоже успешен. В соответствии с (4г) пишем В =>в (а1, з). Возвращаясь к первому вызову В для цепочки Ьа, замечаем, что, так как вызовы С и В успешны, этот вызов В тоже успешен, н в соответствии с (4а) пишем ВсЭ»(Ьа), з). 516 В.с. нисходящий РА3БОР с ОГРАниченными ВОВВРАтлми Возвращаясь теперь к вызову 5, видим, что оба вызова А и В успешны.

Таким образом, цепочка аЬа подходит 5, и 5 сообсцает об успехе. Учитывая (4а), пишем 5 ~с (аЬа), з). Поэтому аЬа б Б (Р). Нетрудно показать, что 1. (Р) = аЬва-(-Ь. Каждая ЯНРОВ-программа Обладает одним важным свойством, а именно: ее результат для данного входа однозначен. Это до.

казывает следующая лемма. Лемма 6.1, Пусть Р=(Ь), Х, К 5) — ЯНРОВ-программа, для которой А =Э" (х,)у„г„) и А =Э»*(х,)у„гл), где А Е)л(, х,у, = х,у,=тЕХ», Тогда х,=х„у,=у, и Г,=Г,. До к а з а тел ьст во. Доказательство проводится простой индукцней по меньшему из чисел пс и и,.

Вез потери общности будем считать, что и, <п,с Базис, п,=1. Применяется Одно из правил А-ва, А — е или А- ). Отсюда сразу получаем нужное утверждение. Шаг индУкс(исс. ДОНУстнм, что УтвеРждение ВеРно длн п < пс, причем и, > 1. Пусть для А есть правило А — ВС117. Допустим, что А~"с(хсту„гс) для с=1 и 1=2 получено в силу (4) нз В=Э с(ис) ос, Ес) и (возможно) С==;»лс,(и,) В;, С,) И1нли с)=С»~с (ис) Вс, Сс), Тогда т, < пс,.

так что, йрименяя предположение индУкции, заключаем, что и,=и„ос=о, и 11=1». РассмотРим отдельно два случая, зависящие от значейия 11. Случай 1: 11=1,=1. Так как 11<-пс, то и",=и,", Всв ов" и 1,"= 1;. ПосколькУ в Данном слУчае хс=ио Ус=-Рс" и ге=-17 ДлЯ 1 =1 и 1 =2, получаелс нужный результат. Случай 2: 11 —— 1,=з. Тогда исо;Г-Вс для 1=1 и с=2.

Так в Ф КаК йС < и,, та и;=-и.,', О,'=-Рв . И С;=1, ЕСЛИ 1,=З, то х,=и;ис, ус=о; и Г,=з для 1 =1 и с==-2; нужное заключение, таКИМ ОбРаЗОМ, ПОЛУЧЕНО. ПРИ Сс'=1 РаССУжДаЕМ ДЛЯ йс И О,"таК же, как в случае 1. ГЗ Отметим, что ЯНРОВ-программа не обязана давать результат для каждой входной цепочки. Например, каждая программа, содержащая правило 5 — 55/5, где 5 — начальный символ, не распознает ни одной цепочки (точнее, для нее отношение ~+ пусто). Представление ЯНРОВ-программ, которым мы пользовались до сих пор, выбрано для удобства изложения. На практике желательно иметь правила более общего вида.

Для этого введем расширенные ЯНРОВ-правила и определим их смысл в терминах прежних правил: 17. А. Алв, Длв. Улвмвл. т. С 517 Гл. Б. АлгоРитмы РАзвОРА с ОГРАниченнь[ми БозВРАтхми ( ) Правило А ВС заменяет два правила А — ВС(Р и 1 '6 Р (, где Р— новый символ. (2) Правило А — В(С заменяет правила А- ВР(С и Р— е. (3) Правило А — В заменяет правила А ВС и С вЂ” е. (4) Правило А- А,Аи . А„для п > 2 заменяет множество правил А — А,В„В,— А,в„..., В„,— А„,В, „В„,— и-1 и' (6) Правило А — а,/а,/.../а„, где и,— цепочка нетермнналов, В С заменяет множество правил А — В /С, С вЂ” В (С ..., С -и/ и >, Си,— Ви,/Ви н В,— и„ВТ вЂ” а„..., В„а„.

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

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

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

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