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

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

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

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

Следует отметить, однако, что ПС-анализ может быть адаптирован к разбору некоторых неоднозначных грамматик, таких как приведенная выше. При разрешении указанного конфликта "перенос/свертка" при обнаружении е!ае в пользу переноса синтаксический анализатор будет работать так, как мы ог него и ожидаем, связывая е!ае с предыдущим !Ьеп, которому еще не найдено соответствующее е!ае, Синтаксические анализаторы для таких неоднозначных грамматик мы рассмотрим в разделе 4.8. и Еще одна распространенная причина конфликта — когда у нас есть основа, но содержимого стека и очередного входного символа недостаточно для определения продукции, которая должна использоваться в свертке. Следующий пример иллюстрирует эту ситуацию.

30В Глава 4. Синтаксический анализ Пример 4.25. Предположим, имеется лексический анализатор, который возвращает имя токена Ы для всех имен независимо от их типа. Предположим также, что наш язык вызывает процедуры по именам с параметрами, заключенными в скобки, и что тот же синтаксис используется и для работы с массивами. Поскольку трансляции индексов массива и параметров процедуры существенно отличаются друг от друга, мы должны использовать различные продукции для порождения списка фактических параметров и индексов.

Следовательно, наша грамматика может иметь (среди прочих) продукции наподобие приведенных на рис. 4.30. Ы ( рагате!ег 1и~ ) ()) х)т~ (2) ктт~ (3) рагате~ег !1х) (4) ра«ате)ег 11х) (5) ра«атас« (6) ехрг (7) ехрг ((() ехрг 11га (9) ехрг 11х) ехрг:= ехрг рагате!ег 1и), рагате)ег рагатезег Ы Ы ( ехр«11кт ) Ы ехрг 1Ы, ехрг ехрг Рис. 4.30. Продукции, включающие вызов процедуры и обращение к массиву Инструкция, начинающаяся с р ( з., 3 ), будет передана синтаксическому анализатору как поток токенов Ы (Ы, Ы). После переноса первых трех токенов в стек ПС-анализатор окажется в конфигурации Стек Ы(Ы ВХОД ,Ы ) Очевидно, что токен Ы на вершине стека должен быть свернут, но какой продукцией? Правильный выбор — продукцией (5), если р — процедура, и продукцией (7), если р — массив.

Содержимое стека не может подсказать, чем является р; для принятия решения мы должны использовать информацию из таблицы символов, которая была занесена в стек при объявлении р. Одно из решений состоит в замене токена Ы в продукции (1) на ргосЫ и использовании более интеллектуального лексического анализатора, который возвращает ргосЫ при распознавании лексемы, представляющей собой имя процедуры. Такой способ требует от лексического анализатора обращения к таблице символов перед тем, как вернуть токен. 309 4.6. Введение в Ей-анализ: простой Ьй Если мы внесем эти изменения, то при обработке р(з, 3 ) синтаксический анализатор может оказаться в конфигурации Стек ВхОд ,Ы ) ргосЫ ( Ы либо в конфигурации, приведенной ранее. В первом случае мы выбираем свертку с использованием продукции (5), в последнем — с использованием продукции (7). Обратите внимание, что выбор определяется третьим от вершины символом в стеке, который даже не участвует в свертке.

Для управления разбором ПС-анализ может использовать информацию "из глубин" стека. и 4.5.5 Упражнения к разделу 4.5 Упражнение 4.5.1. Укажите основу каждой из приведенных ниже правосентен- цнальных форм для грамматики Я вЂ” 0 о 1 ! 0 1 из упражнения 4.2.2, ьл а) 000111; б) ООо11. Упражнение 4.5.2. Повторите упражнение 4.5.! для грамматики Ь' — Я Я + + ~ Я Я * ! а из упражнения 4.2.1 и следующих правосентенцнальных форм: а) ЗЯБ+а*+; б) ЯЯ + а * а+ „ в) ааа* а++. Упражнение 4.5.3.

Проведите восходящий синтаксический анализ для следую- щих входных строк и грамматик: а) входная строка 000111, соответствующая грамматике из упражнения 4.5.1; б) входная строка аао * а + +, соответствующая грамматике из упражнения 4,5.2. 4.6 Введение в ЕК-анализ: простой ЕК Наиболее распространенный тип восходящих синтаксических анализаторов на сегодняшний день основан на концепции, называющейся ) й(Й)-анализом; 1, здесь означает сканирование входного потока слева направо, й — построение правою порождения в обратном порядке, а й — количество предпросматриваемых З1О Глава 4. Синтаксический анализ символов входного потока, необходимое для принятия решения. Практический интерес представляют случаи и = О и )с = 1, и здесь будут рассмотрены только ЬК-анализаторы с /с < 1.

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

4.6.1 Обоснование иенользования 1.К-анализаторов ЬК-анализаторы управляются таблицами наподобие нерекурсивных ЬЬ-анализаторов из раздела 4.4.4. Грамматика, для которой можно построить таблицу синтаксического анализа с использованием одного из методов из этого и следующего разделов, называется ЕЯ-:рамматцкой. Интуитивно, чтобы грамматика была 1.К.-грамматикой, достаточно, чтобы синтаксический анализатор, работающий слева направо методом переноса/свертки, был способен распознавать основы правосентенциальных форм при их появлении на вершине стека. ЬК-анализ весьма привлекателен по множеству причин.

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

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

Введение в ЬК-анализ: простой ЬК часть продукции в порожденной ею правосентенциальной форме с дополнительным предпросмотром и входных символов. Это требование существенно мягче требования для ЬЬ(й)-грамматик, в которых мы должны быть способны распознать продукцию по первым й символам порождения ее тела. Таким образом, не должен казаться удивительным тот факт, что ЬК-грамматики могут описать существенно больше языков, чем ЬЬ- грамматики. Основной недостаток ЬК-метода состоит в том, что построение Ьй.-анализатора для грамматики типичного языка программирования вручную требует очень большого объема работы. Для решения этой задачи нужен специализированный инструмент — генератор ЬК-анализаторов. К счастью, имеется множество таких генераторов, и мы рассмотрим один из наиболее широко используемых — уасс— в разделе 4.9.

Такой генератор получает контекстно-свободную грамматику и автоматически строит ее синтаксический анализатор. Если грамматика содержит неоднозначности или другие конструкции, трудные для синтаксического анализа сканированием входного потока слева направо, генератор локализует их и предоставляет детальную диагностическую информацию. 4.6.2 Пункты н ЬК(0)-автомат Каким образом ПС-анализатор выясняет, когда следует выполнять перенос, а когда — свертку? Например, когда стек на рис.

4.28 содержит ЬТ, а очередной входной символ — *, каким образом синтаксический анализатор узнает, что Т на вершине стека — не основа, так что корректное действие — перенос, а не свертка Т в Е? ЬК-анализатор принимает решение о выборе "перенос/свертка", поддерживая состояния, которые отслеживают, где именно в процессе синтаксического анализа мы находимся. Состояния представляют собой множества "пунктов'*. ЬК (О)- пункт (для краткости — просто пункт ) грамматики С вЂ” это продукция С с точ- 5 кой в некоторой позиции правой части.

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

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

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