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

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

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

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

(2) Дуга, ведущая из и, в и, заменяется либо (в случае а) дугой из и, в и, либо (в случае б) дугами, ведущими нз обеих вершин и, й и, в вершину п, либо (в случае а) дугой из а, в и. В веРшинах па и и, пРовеРЯютсЯ пРедикаты, гюэтомУ их нельзя заменять структурами. Другие вершины представляют программы и их можно заменять далее. Построим с(-схему, соответствующую программе вида П В, бтеп ыгИ1!е В, до 11 В, 1Иеп 5, е1ае 5, епд спи; !.а. дРуГие пРилОжения АПГОРитмОВ РА3БОРА и пеРБВодА ГЛ. !. ВВЕДЕНИЕ В КОМПИЛЯЦИЮ Рис.

!.!О. Окоичатсаьиая !1-схема; рис, 1,11. Вершины дерева помечены соответствующими вершинами или контурами 6-схемы. !"! Приведенный пример в некотором смысле является подделкой. Структура д-схел!ы, 'изображенная на рис. 1.11,— это по существу структура, которую построит для первоначальной программы компилятор па этапе синтаксического анализа. Таким образом, похоже, что мы обсуждаем тот же тип синтаксического анализа, что и в равд. !.2.3.

Однако следует иметь в виду, что этот структурный анализ можно проделать, не ссылаясь на программу, а глядя только на !1-схему. Более того, мы привели этот пример графопорождающей грамматики из-за его связи Рис. 1.9. Построеиие д-схемы; с! ' Вз Вк Л! Пк Са Ва ВБ Нв Рис. 1.11. Лереио, описыиа!ои!ее структуру с1-схемы, е1зе И В, Фен 5,; 5,; лт!111е В, Йо 5, епд е1зе 5а еп!! ей!! Всю программу можно представить в виде И В, !!лен 5, е1зе 5, епс1, где 5, представляет всю часть от первого АУЫ!е до 5„ а 5, представляет И В, ...

5, епе!. Это первый шаг анализа программы, соответствующий замене одной вершины структурой б на рис. 1.3. Продолжая анализ, представим 5„в виде 5а,; 5, (5!е — это АУЫ!е В, ... 5, епе! епс!). Таким образом, этот шаг анализа соответствует замене вершины л, на рис.

1.3, б графом а. Результат показан на рис. 1.9, а. Далее, 5„имеет вид лт!л!1е В, е!о 5п епе1, где 5,„— это И Ва... 5, епе!. Тогда можно заменить левого прямого потомка корня дерева на рис. 1.9, и структурой, изображенной на рис. 1.8, а. Результат показан на рис. 1.9, б. Окончательный результат нашего анализа данной программы показац иа рис. 1.10. Здесь мы позволили себе нарисовать контуры вокруг зал!еняемых вершин; заметим, что каждая из последовательных замен осуществляется внутри контура. Таким образом, на г1-схему можно наложить естественную древовидную структуру, в которой вершины г1-схемы будут листьями, а контуры — Внутренними вершинами дерева. 11рямым предком вершины дерева будет контур, непосредственно окружающий ее представление в д-схеме. Соответствующее дерево показано на / l / / / / / / ! ! ! ! ! ! ! ! ! ! ! л с Се ~ 1 1 ! 1 ! / / l I / ЗАМЕЧАНИЯ ПО ЛИТЕРАТУРЕ Замечания по литературе 103 с языками программирования, но существует много чисто теоретико-графовых понятий, которые можно определить с помощью грамматик, порождаюрдих графы (обобщив подходящим образом пример 1.8),— класс планарных графов, например, или класс бинарных деревьев, Трудности, возникающие при попытках найти удовлетворительную грзммзтнческую модель для зпглийского языка, хороню представлены в книге Хомского [1965[.

Бобров [1963] дает обзор усилий, пзпрзвлеииых нз использовзние английского языка, илн, точнее, некоторого его подмножества, в кзчсстве языка программирования. Обзор теоретических аспектов лингвистики соде жится в кинге Бзр-Хнллелз [1964] '). Ь онятие гпзммзтикн, порождающей графы, взято нз работы Пфзльпв н Розенфельде [!969], теории этих грамматик посвящены статьи Моитзнзри [1970] н Пзвлндисз [1972). Одна из первых работ по синтаксическому внзлизу образов припедлежит Шоу [1970]. Обзор некоторых результатов, полученных в этой области, можно найти у Миллере н Шоу [1968]').

') Рекомендуем также сборник „Автоматический перевод" [1971], книгу Виногрздз [1972] н статьи Цейтннз [1971] и Вудса !1970),— 17рим. перев. з) См. также [Абэ н др., 1973] н [Фу, 1974].— Прим. перев. 2 элеиенты тео~ии языков В этой главе мы займемся аспектами теории формальных языков, существенными с точки зрения синтаксического анализа и перевода, Вначале рассмотрим синтаксические аспекты языка, Но так как ббльш ю часть синтаксиса сов еменпы язык в нога йя можно опуса о ью контекс -сво- о ных г амматик мы обратим особое внимание на теорию контекстно-свободных языков.

Сначала изучим один важный подкласс контекстно-свободных языков, а именно регулярные множества. Понятия теории регулярных множеств находят широкое применение и встречаются во многих разделах этой книги. Другой важный подкласс языков образуют детерминированные контекстно-свободные языки. Это контекстно-свободные языки, грамматики которых допускают простой синтаксический анализ. По счастливому случаю или из-за того, что нх преднамеренно создают такими, современные языки программирования можно с хорошим, хотя и нс полным приближением считать детерминированнымн контекстно-свободными языками. Для этих трех классов языков--контекстно-свободных, регулярных и детерминированных контекстно-свободных — мь1 дадим их точные определения и опишем основные свойства. Так как теория языков очень обширна и нс все в ней имеет отношение к синтаксическому анализу и переводу, доказательства некоторых ее важных теорем приводятся в виде наброска или выносятся в упражнения.

Аты стараемся особо выделять только те аспекты теории языков, которые полезны для изложения дальнейшего материала книги. Как и в гл. О и 1, читатель, знакомый с теорией языков, может пропустить или бегло просмотреть эту главу. 2.1. СПОСОБЫ ОПРЕДЕЛЕНИЯ ЯЗЫКОВ В этом разделе с общей точки зрения будут рассмотрены два основных механизма определения языков — механизм порождения, или генератор, и механизм распознавания, или распозна- ГЛ. 2. ЭЛЕМЕИТЫ ТЕОРИИ ЯЗЫКОВ ватель. Мы обсудим только генераторы самого распространенного типа — грамматики Хамского, з распознаватели рассмотрим с несколько большей степенью общности и введем в последующих разделах некоторые из многих типов распознаватече, те.чей, изучавшихся в литературе.

2ЛЛ. Мотивировка Мы определяем язык Ь как множество цепочек конечной длины в алфавите Х, опрос: как описать я в убтг-случке; кбгда он бесконечен. Разумеется, если Е состоит из конечного числа цепочек, то самый очевидный способ — составить список всех цепочек йз Е. Однако для многих языков нельзя (или, быть может, нежелательно) установить верхнюю границу длины самой длинной цепочки языка. Следовательно, приходится рассматривать языки, содержащие сколь угодно много цепочек. Очевидно, что такие языки нельзя определить исчерпывающим перечислением входящих в них цепочек, и, стало быть, надо искать другие способы их описания. Как и прежде, мы хотим, чтобы описание языка было конечным (имело конечный „объем"), хотя описываемый язык может быть и бесконечным.

Известно несколько методов описания языков, удовлетворяющих этому требованию. Один из них состоит в использовании порождающей системы, называемой грамматикой. Цепочки языка строятся точно определенными способами с применением правил грамматики, Одно из преимуществ определения языка с помощью грамматики в том, что операции, производимые в ходе синтаксического анализа и перевода, можно сделать проще, если воспользоваться структурой, которую грамматика приписывает цепочкам („предложенням") языка.

Грамматики, особенно контекстно- свободные, мы язучим очень подробно. Второй метод описания языка использует частичный алгоритм, который для произвольной входной цепочки остановится и ответит „да" после конечного числа шагов, если эта цепочка принадлсжит языку. В самом общем случае мы могли бы позволить частичному алгоритму либо остановиться и ответить „нет", либо продолжать работать бесконечно, если цепочка не принадлежит языку.

Однако в практических ситуациях мы должны потребовать, чтобы этот частичный алгоритм был алгоритмом, т. е. чтобы ои прекращал работу дчя всех входных цепочек, Мы будем представлять частичные алгоритмы, определяющие языки, в виде несколько схематизированного устройства. Это устройство, называемое Раапазнавате,есхч, будет введено в равд. 2.1.4, 2 ! СПОСОбЫ ОПРЕДЕЧЕИИЯ ЯЗЫКОВ 2Л.2.

Грамматики Грамматики образуют, по-видимому, наиболее важный класс генераторов языков. Грамматика — это математическая система, и еделяющая язык. о она является ус которое придает епочкам („ предложениям" ) языка полезную структуру. В этом разделе мы рассмотрим класс грамматик, называемых грамматиками Хамского или грамматиками составляющих. В грамматике, определяющей язык Ь, используются два конечных непересекающихся множества символов — множество нетерминальных символов, которое часто будет обозначаться буквой в)'), и множество терминальных символов, обозначаемое Х. Из терминальных символов образуются слова (цепочки) определяемого языка.

Нетерминальные символы служат для порождения слов языка Е способом, который будет объяснен позднее. Сердцевину грамматики составляет конечное множество Р правил образования, которые описывают процесс порождения цепочек языка. Правило — это просто пара цепочек, или, точнее, элемент множества (ХОю)*Н(1ч()Х)" х (Х0Х)'. Иначе говоря, первой компонентой правила является любая пеночка, содержащая хотя бы один нетерминал, а второй компонентой — любая цепочка. Например, правилом может быть пара (АВ, СОЕ). Если уже установлено, что некоторая цепочка сс порождается грамматикой (или „выводится" в ней) и сс содержит АВ, т.

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

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

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

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