Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 66

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 66 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 662019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Пример 4.35. Рассмотрим расширенную грамматику выражений, множества пунктов и функция сото которой представлены на рис. 4.31. Очевидно, что строка Е+ Т* является активным префиксом этой грамматики. Автомат на рис. 4.31 32З Глава 4. Синтаксический анализ Пункты как состояния НКА Недетерминированный конечный автомат АГ для распознавания активных префиксов может быть построен путем рассмотрения пунктов в качестве состояний. Существует переход из А — гт . Х)3 в А — аХ )3, помеченный Х, и переход из А — а. В)3 в  — "у, помеченный е. В таком случае с~.ояже (1) для множества пунктов (состояний М) 1 в точности представляет собой е-замыкание множества состояний НКА, определенного в разделе 3.7.1.

Таким образом, Оото (1, Х) дает переход из 1 для символа Х в ДКА, построенном из М при помощи метода построения подмножеств. При таком подходе процедура йеикт (С') на рнс. 4.33 представляет собой процедуру построения подмножества, примененную к НКА АГ, состояниями которого являются пункты.

после чтения Е + Т* будет находиться в состоянии 7. Это состояние содержит пункты Т вЂ” ~ ТвГ (Е) à — Ы Они в точности являются допустимыми пунктами для Е + Тя. Чтобы увидеть, почему это так, рассмотрим следующие три правые порождения: Е' Е' — Е Е+Т тт Е+ТвГ тт — Е+ Т*(Е) Е тт Е+Т Е+Т*Г в та Е+ТвЫ Е' =ь Е тт — Е+Т тт => Е+ТвЕ 4.6.6 Упражнения к разделу 4.6 Упражнение 4.6.1. Опишите все активные префиксы следующих грамматик: а) грамматика Я вЂ” О Я 1 ! О 1 из упражнения 4.2.2, а; ! б) грамматика 5 — Я Я+ ~ Я Я* ~ а из упражнения 4.2.1; Первое порождение показывает допустимость Т вЂ” Тя К второе — допустимость Е -+ (Е), а третье — допустимость à — Ы.

Можно показать, что других допустимых пунктов для Е + Т* не существует, хотя мы и не будем доказывать здесь этот факт. и 329 4.6. Введение в 1.К-анализ: простой 1.К 1 в) грамматика  — В (В) ~ е из упражнения 4.2.2, в. Упражнение 4.6.2. Постройте 5ЬК-множества пунктов для (расширенной) грам- матики из упражнения 4.2.1. Вычислите функцию оото для этих множеств пунк- тов.

Приведите таблицу синтаксического анализа для этой грамматики. Принад- лежит ли эта грамматика к классу БЬК? Упражнение 4.6.3. Приведите действия вашей таблицы синтаксического анализа из упражнения 4.6.2 для входной строки аа * а+. Упражнение 4.6.4. Для каждой из (расширенных) грамматик из упражнений 4.2.2, а — ж: а) постройте 5ЬК-множества пунктов и их функции бОТО; б) укажите конфликты действий в ваших множествах пунктов; в) постройте таблицы БЬК-анализа, если таковые существуют. Упражнение 4.6.5. Покажите, что грамматика  — ~ АаАЬ)ВЬВа А  — ~ е принадлежит классу ЬЬ (1), но не ВЬК (1). Упражнение 4.6.6.

Покажите, что грамматика  — э" А)А А — а принадлежит классу Я.К (1), но не 1.Ь (1).  — А;Ь; А1 ~ ау А; ~ау для1<1<и, для 1 < г, ~' < и и 1 ~ 1 Покажите, что а) С„имеет 2из — и продукций; б) С„имеет 2" + из + и множеств 1.К (0)-пунктов; !! Упражнение 4.6.7. Рассмотрим семейство грамматик С„, определяемое следующим образом: ззо Глава 4. Синтаксический анализ в) С„принадлежит классу Я.К (1).

Что говорит проведенный анализ о возможном размере ).й-анализаторов? ! Упражнение 4.6.8. Допустим, что отдельные пункты можно рассматривать как состояния недетерминнрованного конечного автомата, в то время как множества допустимых пунктов являются состояниями детерминированного конечного автомата (см. врезку "Пункты как состояния НКА" в разделе 4.6.5). Для грамматики о — Я Я+ ~ Я 5* ~ а из упражнения 4.2.1 сделайте следующее. а) Изобразите диаграмму переходов (НКА) для допустимых пунктов этой грамматики в соответствии с правилами из упомянутой врезки.

б) Примените метод построения подмножеств (алгоритм 3.20) к вашему НКА из части а. Каков размер получившегося ДКА по сравнению с множеством 1.К (О) пунктов грамматики? !! в) Покажите, что во всех случаях применение метода построения подмножеств к НКА, полученному из допустимых пунктов грамматики, дает множества ЕК (0)-пунктов. ! Упражнение 4.6.9. Ниже приведена неоднозначная грамматика Я вЂ” АЯ(Ь А — Я А(а Постройте для данной грамматики ее набор множеств ).К (О)-пунктов. Если мы попытаемся построить таблицу (.К-анализа для данной грамматики, то получим некоторые конфликты действий.

Какие именно? Предположим, что мы пытаемся использовать таблицу синтаксического анализа недетерминированно, выбирая при конфликте возможное действие. Приведите все возможные последовательности действий для входной строки аЬаЬ. 4.7 Более мощные ЕК-анализаторы В этом разделе мы расширим рассмотренные методы (,й-анализа использованием предпросмотра одного символа входного потока. Существует два различных метода. 1. Канонический 1 К, или просто (.й-метод, использующий предпросмотр символа (или символов).

Этот метод использует большое множество пунктов, именуемых (.К (1)-пунктами. ЗЗ1 4.7. Более мощные ЬК-анализаторы 2. Ьй с предпросмотром, или ЬАЬй Поо1сайеад Ь11)-метод, основанный на множестве пунктов ЬВ(0) и имеющий существенно меньше состояний, чем типичный анализатор, основанный на Ьй (1)-пунктах. Путем аккуратного добавления предпросмотров в ЬК (О)-пункты ЬАЬК позволяет работать с существенно большим количеством грамматик, чем БЬК, и при этом строить таблицы синтаксического анализа, которые не больше БЬй-таблиц. ЬАЬ — это метод, выбираемый в большинстве случаев. После рассмотрения обоих этих методов мы завершим наше обсуждение вопросом о том, каким образом можно сжать Ьй-таблицы при работе в средах с ограниченной памятью.

4.7.1 Канонические 1 К(1)-Пункты Сейчас мы представим наиболее общий метод построения таблиц Ьй синтаксического анализа для грамматики. Вспомним, что в БЬй-методе состояние г вызывает свертку в соответствии с продукцией А — а, если множество пунктов 1, содержит пункт [А — а ], а текущий входной символ а входит в го~.ьоц'(А). В некоторых ситуациях, однако, когда состояние г находится на вершине стека, допустимый префикс,Згт в стеке таков, что за ДА ни в какой правосентенциальной форме не может следовать а.

Таким образом, свертка в соответствии с продукцией А — а оказывается некорректной при входном символе а. Пример 4.36. Рассмотрим пример 4.34, в котором в состоянии 2 имелся пункт )1 — Бз соответствующий упомянутой выше продукции А — гт, а а может быть символом = из множества кои.ов(Л). Таким образом, синтаксический анализатор БЬй должен вызывать в состоянии 2 при очередном входном символе = свертку в соответствии с продукцией Л вЂ” Т (в связи с наличием в состоянии 2 пункта о' — Ь = П может также использоваться перенос).

Однако в грамматике из примера 4.34 не существует правосентенциальной формы, которая начинается с П = . Таким образом, в состоянии 2, соответствующем единственному допустимому префиксу Ь, не должна использоваться свертка этого Т, в )1. Можно хранить в состоянии больший объем информации, который позволит отбрасывать такие некорректные свертки в соответствии с продукциями А — о. Разделяя при необходимости состояния, можно добиться того, что каждое состояние Ьй-анализатора будет точно указывать, какие входные символы могут следовать за основой а, для которой возможна свертка в А. Дополнительная информация вносится в состояние путем такого переопределения пунктов, чтобы они включали в качестве второго компонента терминальный символ.

Общим видом пункта становится [А — а 13, а], где А — гг13 — продукция, а а — терминал или маркер конца входной строки 3. Такой объект называется Ьй [1)-пунктом. Здесь 1 означает длину второго компонента, именуемого ЗЗ2 Глава 4. Синтаксический анализ предлросмотром (1оока(зев) пункта." Предпросмотр не влияет на пункт вида [А - гк. Д,а], где Д не равно с, но пункт [А - о,а] приводит к свертке в соответствии с продукцией А — ск, только если очередной входной символ равен а. Таким образом, свертка в соответствии с продукцией А -+ сз применяется только при входном символе а, для которого [А — ск, а] является ЬК(1)-пунктом из состояния на вершине стека. Множество таких а всегда является подмножеством Роь1.озн (А), но может быть истинным подмножеством, как в примере 4.36.

Формально мы говорим, что 1.К (1)-пункт [А — ск Д, а] допустйм (ча!Ы) для активного префикса 7, если существует порождение Я =~ бАю =ь даДю, где ст ст 1) у=ба; 2) либо а является первым символом ю, либо ю — с, а а — 8. Пример 4.37. Рассмотрим грамматику Я вЂ” В  — а В[Ь Существует правое порождение 5 =~ ааВаЬ =~ аааВаЬ. Мы видим, что пункт тп ст [ — а В, а] допустйм для активного префикса у = ааа, если положить в приведенном выше определении Б = аа, А = В, ю = аЬ, сз = а и Д = В.

Существует также правое порождение Я =~ ВаВ =~ ВааВ. Из него видно, что пункт ст 7 "т [ — а В, й] является допустимым для активного префикса Ваа. П 4.7.2 Построение множеств 1.К(1)-Пунктов Метод построения набора множеств допустимых 1.Гс (1)-пунктов, по сути, тот же, что и для построения канонического набора множеств 1,Гс(0)-пунктов. Нам надо только модифицировать две процедуры — сьОЯже и ботО. Чтобы разобраться в новом определении операции о.оя1кд (в частности, почему Ь должно быть в р1КЗт(Да)), рассмотрим пункт вида [А — сз ВД, а] в множестве пунктов, допустимых для некоторого активного префикса у. Тогда существует правое порождение Я ~ ЬАах ~ ЬгкВДах, где 7 = бсз.

Предположим, что ст ст Дах порождает строку терминалов Ьу. Тогда для каждой продукции вида  — з1 для некоторого з1 мы имеем порождение Я =~ 7ВЬу ~ уз1Ьу. Таким образом, ст ст [ — з1, Ь] является допустимым для 7. Заметим, что Ь может быть первым терминалом, порожденным из Д, либо возможно, что Д порождает с в порождении Дах ~ Ьр, и, следовательно, Ь может представлять собой а.

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

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

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