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

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

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

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

4.38. Для ясности показана также последовательность Пример 4.31. На рис. 4.37 показаны функции Астюм и сото из таблицы БК- анализа грамматики выражений (4.1), повторенной ниже с пронумерованными продукциями: Глава 4. Синтаксический анализ 322 Рис. 4.37. Таблица синтаксического анализа для грамматики выражений грамматических символов, соответствующая хранящимся в стеке состояниям. Например, в строке (1) 1.К-анализатор находится в состоянии О, начальном состоянии без грамматических символов, и с Ы в качестве первого входного символа. Действие в строке О и столбце Ы поля АСТ10Х на рис.

4.37 — а5; оно означает перенос и внесение в стек состояния 5. В строке (2) выполняется внесение в стек символа состояния 5 и удаление Ы из входного потока. После этого текущим входным символом становится *; действие для состояния 5 и входного символа * — свертка согласно продукции à — !д. Со стека при этом снимается один символ состояния, и на вершине стека появляется состояние О. Поскольку ООтО [О, г') равно а3, в стек вносится состояние 3. При этом получается конфигурация, показанная в строке (3). Остальные строки на рис.

4.38 получены аналогично. и 4.6.4 Построение таблиц Я.К-анализа Я.К-метод построения таблиц синтаксического анализа — хорошее начало для изучения 1.К-анализа. Далее таблицы синтаксического анализа, построенные этим методом, будут именоваться Я.К-таблицами, а 1,К-анализатор, использующий ВЕК-таблицы, — Я.К-анализатором. Два других метода расширяют Я.К- метод путем информации, получаемой предпросмотром входной строки.

323 4.6. Введение в ЬК-анализ: простой 1.К ДЕЙСТВИЕ Вход СТЕК СИМВОЛЫ Е- и Т вЂ” ~ŠŠ— ~Ы Т вЂ” ~ Т*Е Е- Т Е- Ы Т- Г Е- Е+Т Рис. 4.38. Действия ЕК-анализатора лля строки 14 * Ы -Е Ы Я.К-метод начинается с (.К(0)-пунктов и ЬК(0)-автомата, с которыми вы познакомились в разделе 4.5, т.е. для данной грамматики С мы строим ее расширение С' с новым стартовым символом У. Для С' строится канонический набор С множеств пунктов С' вместе с функцией ОотО.

Затем строятся записи Аст!Ом и оото в таблице синтаксического анализа с использованием следующего алгоритма, который требует от нас знания еоееов (А) для каждого нетерминала А грамматики (см. раздел 4.4). Алгоритм 4.32. Построение таблицы Б(.К-анализа Вход: расширенная грамматика С'. Выход: функции таблицы Я).К-анализа лет!о!ч и Оото для грамматики С'. МЕтОд: выполняем следующие действия. 1. Строим С = (1о, 1ы .,,, 1„) — набор множеств 1.К (0)-пунктов для С'.

2. Из 1; строим состояние!. Действие синтаксического анализа для состояния 1 определяем следующим образом. а) Если (А — о а)3!е1, и оото(1„а) = 1, то устанавливаем Аст!Он (г', а) равным "перенос з". Здесь а должно быть терминалом. (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) 0 05 03 02 027 0275 0 2 7 1О 02 01 016 0165 0163 0169 О1 и Т Тя Тки Т*Е Т Е Е+ е+и Е+Г Е+Т Е и* и+Ы3 ни+ Ы8 *и+ Ы8 *ы+ Ы8 ы+ Ы8 +Ы8 +Ы3 +Ы3 +Ы8 Ы3 3 3 3 8 Перенос Свертка по Свертка по Перенос Перенос Свертка по Свертка по Свертка по Перенос Перенос Свертка по Свертка по Свертка по Принятие 324 Глава 4. Синтаксический анализ б) Если [А — гг ] е 1„то устанавливаем лст~он [1,а] равным "свертка А — гг" для всех а из гоы.оту (А); здесь А не должно быть равно У.

в) Если [У вЂ” о ]е1;,то устанавливаем лст1о1ч[1,8] равным "принятие". Прн наличии любого конфликта между действиями, возникшего в результате применения указанных правил, делается вывод о том, что грамматика не принадлежит классу БЬК (1). В таком случае алгоритм не может построить синтаксический анализатор для данной грамматики. 3.

Переходы для состояния 1 строим для всех нетерминалов А с использованием следующего правила: если оото (1;, А) = 1, то оото [1, А] = 1. 4. Все записи, не определенные правилами 2 и 3, получают значение "ошибка". 5. Начальное состояние синтаксического анализатора строим из множества пунктов, содержащего [У вЂ” о].

о Таблица синтаксического анализа, состоящая из функций АСТ1ОХ и бОТО, определенных при помощи алгоритма 4.32, называется Я.К(1)-табяицейС. 1.К- анализатор с использованием бЬК(1)-таблицы для С называется Я.К(1)-анализатором С, а грамматика, имеющая Я.К(1)-таблицу, называется ВЬК(1)-граиматикой.

Обычно в БЬК(1) опускается (1), идущее после БЬК, поскольку мы не работаем с синтаксическими анализаторами, предпросматривающими более одного символа. Пример 4.33. Построим Я.К-таблицу для расширенной грамматики выражений. Канонический набор множеств 1.К (О)-пунктов для этой грамматики был показан на рис. 4.31.

Сначала рассмотрим множество пунктов 1о. Е' — .ŠŠ— Е + Т Е вЂ” Т Т Т*Г Т вЂ” à à — .(Е) à — Ы Пункт à — (Е) приводит к записи лст1он[0,(] = перенос 4, а пункт à — ~ и1 — к записи лст~он [О,Ы! = перенос 5. Прочие пункты в 1с действий не дают. Теперь рассмотрим пункты 1~. Е' — Е.

Е-Е+Т 325 4.6. Введение в 1.К-анализ: простой ЬК Первый пункт дает Асторы [1, $] = принятие, а второй — Асйом [1, +] = перенос 6. Теперь очередь Тз.' Š— Т. Т вЂ” Т хЕ Поскольку го~.ьоук (Е) = ($, +, ) ), первый пункт приводит к лстю1ч [2, $] = Астюи [2, +] = Астюи [2, )] = свертка Š— Т. Второй пункт дает Астюы [2,*] = перенос 7. Продолжая работу таким образом, мы получим таблицы Астюм и сзото, показанные на рис. 4.31. На этом рисунке номера продукций в свертках те же, что и порядок, в котором они находятся в исходной грамматике (4.1), т.е. продукция Е х Е+ Т имеет номер 1, Š— Т— номер 2 и т.д. и Пример 4.34.

Каждая Я.К(1)-грамматика однозначна, однако имеется множе- ство однозначных грамматик, не принадлежащих классу $1К(1). Рассмотрим грамматику с продукциями Я вЂ” А=В]В Ь вЂ” х *В ]!й  — ~ Ь (4.! 5) в Как и в разделе 2.8.3, Ьзначение описывает ячейку памяти, а т-значение — значение, хранящееся в втой ячейке.

Е н В можно рассматривать как 1- и г-значение соответственно, а * — как оператор "содержимое".8 Канонический набор множеств 1.К (0) пунктов для грамматики (4.15) показан на рис. 4.39. Рассмотрим множество пунктов Тз. Первый пункт в этом множестве приводит к тому, что Аст1ои [2, =] становится равным "перенос б". Поскольку роы.оту (В) содержит = (чтобы увидеть, что это так, рассмотрите порождение Я =а Е =а В =~ хВ = В), второй пункт устанавливает запись Астю1ч [2, =] равной "свертка  — Ь".

Поскольку в записи Астюи [2, =] одновременно оказываются и перенос, и свертка, прн входном символе = в состоянии 2 наблюдается конфликт "перенос!свертка". Грамматика (4.15) не является неоднозначной. Этот конфликт "перенос/свертка" возникает из того факта, что метод построения БЕК-анализатора не достаточно мощный для запоминания достаточного левого контекста для принятия решения о том, какое действие должно быть предпринято синтаксическим анализатором для входного символа = при наличии строки, свертываемой в Ь. Канонический метод и ЬА1.К-метод, которые мы рассмотрим далее, успешно работают с ббльшим З2б Глава 4. Синтаксический анализ 15 ° 1' + гй' 1о: Я- .А=В 16 ° Н- Ь 1з.

У- Я 1т . 1 — *ге. 1в: Л- 12 '  — Ь. 19 ° Рис. 4.39. Канонический 1.К (О)-набор для грамматики (4.15) набором грамматик, включая грамматику (4.15). Заметим, однако, что существуют такие однозначные грамматики, для которых любой метод построения ЕК- анализатора приводит к таблице действий с наличием конфликтов. К счастью, при разработке реальных языков программирования таких грамматик можно избежать. а 4.6.5 Активные префиксы Почему ЕК (О)-автоматы могут использоваться при принятии решений "перенос/свертка" ? 1.К(0)-автомат для грамматики характеризует строки грамматических символов, которые могут находиться в стеке ПС-анализатора грамматики.

Содержимое стека должно быть префиксом правосентенциальной формы. Если в стеке хранится гт, а оставшаяся часть входной строки — х, то последовательность сверток должна привести гтх в Я. В терминах порождений Я =ь сгх. 1 тП Однако в стеке могут находиться не все префиксы правосентенциальных форм, поскольку синтаксический анализатор не должен выполнять перенос после осно- 327 4.6. Введение в 1.К-анализ: простой ЬК вы. Предположим, например, Е =~ Г *!6 =~ (Е) * И Тогда в разные моменты времени в процессе синтаксического анализа в стеке хранятся (, (Е и (Е), но в нем не должно находиться (Е)~, поскольку (Е) является основой, которую синтаксический анализатор должен свернуть в Е до того, как выполнит перенос *.

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

Мы говорим, что пункт А — Д . (Зз допустим (ча1Ы) для активного префикса оД, если существует порождение У =~* ггАю =~ аД,Ззш. Вообще гт тт говоря, пункт может быть допустимым для многих активных префиксов. Тот факт, что А — Д~ Дз допустим для аД, многое говорит нам о том, что именно следует выбрать — перенос или свертку — при обнаружении оД в стеке. В частности, если 1)з у'= г, то это предполагает, что основа еше не полностью перенесена в стек и очередное действие анализатора — перенос.

Если Дз = г, то А — ,3~ — основа, и мы должны выполнить свертку в соответствии с этой продукцией. Конечно, два допустимых пункта могут указать на разные действия для одного и того же активного префикса. Одни из этих конфликтов могут быть разрешены путем просмотра очередного входного символа, а другие придется разрешать специальными методами, описанными в разделе 4.8.

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

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

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

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