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

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

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

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

С другой стороны, используя для разбора этой же входной цепочки множество таблиц рис. 7.32, аяализатор выполнит поСледовательность такгов [Т„а), е|',-[Т„иТо ), е) ) — [Т,РТ„), 6) ! — (Т,ТТ„, ), 641 1-!Т,ЕТо ), 642[ Здесь, прежде чем сообщить аб ошибке, анализатор сделает еще три свертки. (3 У.й.б. Иенпгачеиме сверток по цепным прввипвм Изучим теперь важное преобразование множества ГК(й).таблиц, не сохраняющее эквивалентности в смысле предыдущих разделов.

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

Правила такого вида часто встречаются в грамматикал, описывающих языки программирования. Так, цепные правили часто волникантт при использовании коитексгпо.свободной грамматики для описания приоритетов операций в языках программирования. Например, если пеночку а, ! аз « а, следует трактовать как а, + (а,« и,), то говорят, что операция « имеет более вьаокий прйарггтет, чем операция Наша грамматика С„описывающая арифметические выршкения, вводит для е более высокий приоритет, чем для — '. Грамматюка С, состоит из правил (1) Š— Е-'Т (2) Е-Т (3) Т вЂ” ТэР (4) Т Е 76 тз пгсовглзовлнггя нл множсстелх сшлгтлвлиц (5) Р (Е) (6) Р а Можно считать, что нетсрминалы Е, Т и Р порождают выражения различных приоритетон в соответствии с нриорнтетамн операций.

Е порождает выражения, приоритет которых равен !. Это цепочки символов 7', разделенные знаками +. Операцггя -1- имеет приоритет 1. Т пороигдает выражения приоритета 2; опи состоят нз символов Р, разделенных знакаыи ч. Выражения приоритета 3 — это выражения, порожденные нетерминалом Г, и их могкпо считать первичными выраженнями. Таким образоы, при разборе цепочки а, †, 'а,» а, в соответст вии с грамматикой С, сначала нужно свор«узъ а,ла, в 7', а затем свернуть это Т вместе с а, в выражение Е.

Едкнствениая цель, которои сл)жат два цепных правила Е Т в Т Р, состоит в том, чтобы позволить тривиально свертывать выражения более высокого приоритета в выражения более низкого приоритета. В компиляторе правила перевода, связанные обьшно с такими цепными правилами, озиачагот престо, что переводы нстерминалов в левой и правои частях правила совпадают. При таком условии лкгжио, если угодно, исключить свертки но цепным правилам Некоторые явыки программирования имеют 12 и более приоритетов операций Поэтому, если разбор ведется в соответствии с гралгтгатиггоиЧ отражающей иерархию приоритетов, то анализатор часто буде~ выполнять последовательности сверток по цепным правилам. Если удастся исключить такие последовательности сверток, скорость разбора значительно возрастет. В большинстве практических случаев это удается сделать, не изменив получаемого перевода В данном разделе мы опипггм преобразование на множестве !.К(!г)-таблиц, пааво.гиющее исключить свертка по цепным пра.

вилам везде, где это надо. Пусть (Г, Т,)- -гу-недостижимое множество 1.К(!г).таблиц для ! К(й)-грамматики С= (.'т, Х, Р, 5). Предположим, что ар содержит максимально возмо,кпое число элементов гр. Пустг А В— цепное правила из Р. Допустим, что 1.К(й)-алгоритм разбора, нспальзугощий это множссгво таблиц, обладае~ следующим свойством: всякнй раз, когда основа У,!', ...

У, свертывается в В при аванпепочке и, очередным шагом будет свертка В в А. Часто оказывается возможным изменить ьшогкество таблиц так, чтобы основа У,У„... !', свертывалась в Л за один шаг. Выясним, прн каких условиях это ыожко сделать. Пусть р — номер правила А †. В.

Предположим, что Т = = л)', Еу — такая таблица, что [(и) — свертка Р для некоторой 'и уэ гл т. методы оптил1нзлцнп сннтхксическнх Анхлнзхтооов аванцепочки и. Пуст~ ВУ'.=СОТО '(Т, В) и ои'.==((7(В = — СОТО(Т', А), Т'БВ'). Множество Т' сосгаит из таблиц, которые могут появиться в магазине непосредственно под В, прн условии, что над В находится таблица Т.

Бели (Г, Т,) — кано- ническое множество ).Д(й)-таблиц, то Ри= 7(ЕХТ (Т, р) („„. 7.3АЗ). Для того чтобы исключить свертку по правилу р, заменим для каждой таблипы <7', й'у из Л ' значение элемента д (В) с имени таблицы Т па й'(А). Тогда вместо двух тактов, а именно (уТ'Ух(/АУ,(ух...

У,(у„ш, л) ! — (уТ'ВТ, ж, нх) )-(ТТ'А(7, и, гбр) анализатор сделает только один такт (77" У,(7,У,(7„... У,(7„, ш, л),' - ( (Т'А(7, ш, гб) ') Такая замена элемента д'(В) возможна при »славин, что элементы таблнпы Т и всех таблиц нз .й совпадают всегда, кроме ~ех случаев, когда аваицепо пга вызывает свертку по пра- вилу р. друщгми слова ми, пусть Т =' <Д йу и й — —. (<(„д,у, <)„й.щ ., <)„, й у). Тогда требуется, чтобы (1) для всех и из 2'А если 7(и) — не ср н не свертка р, та Д (и) — либо гщ либо совпадает с )(и) при 1 (! -"щ, (2) длн всех Х из уч'()2 если й(Х)эьйх, то д,(Х] — либо гр, либо совпадает с д(Х) при 1 <х<щ.

Бели оба Этн трсбовани я удавлю вора клея, преобразуем таблицы в множествах Т' и и так: (3) положим й'(В) —.-й'(А) для всех <)', й'у из Г', (4) пря !ж !(т (а) лля каждого и Е 2'А заменим Й (и) иа у (и), если Й (и) —.Ау и )(и) — не гр и не свертка р, (б) длЯ каждого ХБВПБ заменим йг(Х) на й(Х), если о(Х) си 3. Изменение, обусловленное приыененнеч правила (3), может сделаю таблицу Т недостижимой, если ее можно достичь только в резулыатс обращения к элементам й'(В) таблиц <,', ' з множества,р', Заметим, что измененный анализатор может помещать в мага- зни символы н таблицы, которые не записывались туда исходным анализатором.

Например, прелположим, что исходный анализатор выполняет свертку в иетерх|ивал В и затем перенос; (уТ' У (),У,ОР У,()„иы, л) ! — (ТТ'ВТ, аш, лх) (7Т'ВТОТ",, и!) ') анои дело в резулыате онхсанонх ханов анализатор достигает Ыа с «оофггурхцвх (тт'ВП, а, Щ), х ве (у!'ЛП. а, л~). Впрочем, эго замечание ие охояет иа хох хххьвезшвх рхссужхехнз.— Прил лерхо. 78 х.х ПРЕОВРАВОВАння пл мнОжестВАх еиаьгАВлнц Новый анализатор выполняет ту же последовательность тактов, но в магазине будут появляться другие символы.

Б этом случае будет (уТ' У,((,У,(/,... У,(у„аш, л) — ' (ТТ'А(7', аш, лг) ,-(ут'А(7' Т". Пусть Т=-<Дйщ Т'=<!',й'У и (I=.=<)„й,ы Тогда В=й'(А), Таб.зица (7' была построена по (7 в соответствии с правилом (4), сформ)лированньгхг выше. Поэтолгу, если 7(а) =перенос, где а = = Г1ДЗТ (аш), то ясно, что Д (а) =перенос. Более того, известно, что й, (и) совпадает с й (и). Значит, новый анализатор выполняет правн.юную последовательность тактов, вв исключениел! того, что оп игнорирует вопрос а том, была ли в действительности произведена свертка по правилу А В, На последующих тактах анализатор не просматривает символы грачмагпкн, находящиеся в магазине.

Так как элементы перехода таблиц (У' и Т совпадакгг, можно быть увереиным в том, что поведение обоих анализаторов будет одинаковым (за исключением сверток по цепному правилу у1- В). Зто преобразование ыожно повторить с новыы множеством таблиц, чтобы исключить возможно бо.тырс сверток по несупгественным с точии зрения семантики цепным правилам. Прилгер 7.23. Исключим возможно больше сверток по цепным правилам в множестве БП(1)-таблиц дчя грамматики 6„ представленной на рнс.

7 32. Таблица Т, вызывает свертку по правилу 2, т. е. по правилу Е - Т. Множеством таблиц, которые могут появиться в магазине непосредственно под Тм являегсн (Т„Т,), -. как СОТО(Т., Е) =7, н СОТО(Т„Е) = Т,. Нужна проверить, что таблицы Т, и Тх, а также Т, и Т„ совместимы везде, кроме элехгептов свертка 2. Действие таблггггы Т, па о есть перенос. Действие таблиц Т, и Т, на в есть гщ Переход таблицы Т, на + есть Т,. Переход таблиц Т, н Т, на о есть а. Следовательно, Т, н ТО а также Т, и Т, совместимы. Поэтому момсно заменить переход таблицы Т, на нетерминале Т с Т, на 7', н переход таблицы Т, на петермннале Т с Т, на Т,.

Йужно также заменить действия таблиц 7', н Т, на символе о с Ар на перенос, поскольку действие Т, на в есть перенос. Н аконец, заменяем гюреходы таблиц Т, и Т„ на символео с гу на ТО потому Чта ПЕрЕХОд табпицЫ Т, На о ЕСТЬ ТО Таблица Т, теперь йедостижихга нз Т„ и, значит, ее можно исключить.

Рассмотрим операпин свертка 4, содержащиеся в таблице Т,. (Правила 4 - эта правило Т Е.) Мпожествач таблиц, которые могуг появиться непосрсдсхвенно под Тх, является (Т„ Т„ 7',). ТепеРь Сб)ТО (Т„, 7 ) = ТО СОТО (Т„Т) =-Т, н СОТО (Т„Т) =. Т „. (Ло описанного преобразования СОТО (Г„, Г) =СОТО(Т„Т) = — Т,, ) гл. т. мгжоды оптимизации синтаксичгских анализатогов Перегар а Г Т Е а а. а ( ) Дайаагйиа а ч- а ( ) Та Та газ Таз Перелей й а + а ( ) р(айаагйоа е + * ! ! е Т, Нужно проверить, что таблица Та совместима с каждой нз таб.

лиц 7'о Т, и Тге Ясно, что это так, посхольку лействпе таблицы Т,— есть .чибо р, либо свертка 4, а переходы ее все равны е. Такам образом, можно заменить переходы таблиц Т,, Т, и Т, на символе Е па Т„Т„н Т„соответственно. Зто делает таблицу Т, иедостюкимои из Т„. Полученное множество таблип показано на рис. 7.33,а. Таблицм Т, и Т, исключении Заметим, что в столбцах, расположенных под символами Е, Т и Е, все элементы перехода оказались совместимыми. Поэтому можно слить эти три стзлбца в один.

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

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

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

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