Главная » Просмотр файлов » Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s)

Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393), страница 60

Файл №522393 Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (Алгоритмы + структуры данных = программы) 60 страницаVirt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393) страница 602013-09-14СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Для программы грамматического разбора н то 1ка с запятой, и плюс — просто терминальные символы без какого-либо существенного различия; и для человека точка с запятой почти не имеет значения и в конце строки кажется избыточной, тогда как знак арифметической операции, бесспорно, осмыслен а). При разработке подходягцей системы восстановления следует принимать во внимание многие подобные соображения, которые связаны с конкретным языком и не могут обобщаться для всех контекстно-свободных языков. Все же сушествуктт некоторые правила и рекомендации, действ)чогцие пе только в рамках одного языка, такого, как ПЛ/О.

Для них, пожалуй, характерно, что они в равной мере связаны как с ~сходн~й коинепцпсп языка, так ханизмом восстановления в программе грамматического разбора. Прежде всего совершенно ясно, что эффективное восстановление возможно или, во всяком случае, намного облегчается лишь в случае языка с ггросто11 стрэ1укгурог1. В частности, если при обнаружении ошибки пропускается какая-го часть входной последовательности, то язык обязательно должен содержать слулсвбно~е слова, неправильное употребление которых крайне маловсрояпю и которые поэтому могут использоваться для возобновления грамматического разббра. В ПЛуО зто правило строго соблюдается: каждый оператор начинается с однозначного служебного слова, такого, как Ьеи1п, 11, зчЬ11е; то же относится к описаниям: они начинаются с чаг, сопз1 илн ргоседцге, Мы назовем зто привилол~ слилсебных слов.

Второе правило более непосредственно связано с построением программы грамматического разбора, Для нисходящего ") Моэкет быпч эти соображения натолкнут читателя ~а мысль, что в современных языках программировании слишком уж много внимания было уделено формальной синтаксичссчоя проблгчатпкс. И это па этапе, когда мы ставим заделу обшеиии с, маншпои па сс~сствсином языке~— Приза рсц 5.9. Восстановление нри сингаксинеских он»ирках збз анализа характерно, что цели разбиваются на подцели; при этом процедуры вызывают друтис процедуры, соответст>зуюшие этим подцелям.

Второе правило определяет, что(если процедура грамматического разбора обнаруживает ошибку, то она не должна прекрагцать работу и сообщать о случившемся вызвавшей ее процедуре. Вместо этого она должна самостоятельно продолжать просмотр текста до того места, откуда можно возобновить анализ. Мы назовем это правилом «пе п>однилеай панику».

Из него следует, что нз процедуры грамматического разбора не может быть другого выхода, кроме обычного завершения работы. *,. Правило «не поднимай панику» можно интерпретировать следующим образом; при появлении неправильной конструкции процедура должна пропустить входной текст, пока не встретится символ, который по правилам может следовать за той конструкцией языка, которую она пыталась обнаружить.

Это означает, что каждой процедуре грамматического разбора в момент текущей ее активации должно быть известно множество внешних символов. Поэтому на первом этапе уточнения (или дополнения) мы снабдим каждую процедуру грамматического разбора явным параметром (нуг, который задает возможные внешние символы. В конце каждой процедуры вставляется явная проверка: действительно ли следующий символ входного текста содержится среди этих внешних символов (если это уже не обусловлено логикой программы)? Все же с нашей стороны было бы неразумно при всех обстоятельствах пропускать входной текст до следующего появления такого внешнего символа.

В конце концов, програчмисг мог по ошибке пропустить всего одни симво.т (например, точку с запятой), а игнорирование текста до следу.ощего внешнего символа может иметь гибельные последствия. Поэтому ко множествам символов, которые прекращают пропуск текста, мы добавим служебные слова, отмечающие начало конструкции, которую не следует пропускать. Таким образом, символы, передаваемые в качестве параметров процедуре грамматического разбора, — это симнолос ооэобнонленип, а не просто внешние символы. Мы можем считать, что множества символов возобяовления с самого начала содержат отдельные служебные слова и при проходе иерархии подцелей грамматического разбора постепенно дополняются внешними символами этих подцеле(ь» Для удобства вводится общая подпрограмма, называемая >ез1, — она выполняет описанную выше проверку.

Эта процедура (5,17) имеет три пава- метра: 1, Множество з! допустимых следующих символов; если текущий символ к нему не принадлежит, то имеет место оп>ибка д Структура лзыкоо и тронтллторы 2. Множество з2 дополнительных символов возобновления, появление которых определенно является ошибкой, но которые ни в косм случае нс следует пропускать.

3. Номер и, который присваивается ошибке, если процедура ее обнаружит. ргосе4пге бмг (т1, т2;,тутгг.тег; и: т1гдет); Ьеп!п !à — ~(тгтн ш х1) тйеп Ьея!и еттот(п); т1; =- т1+т2; пЬ11е -г(лунг ш г1) йо яейутп епй (5.17) епй Процедуру (5.17) удобно использовать при входе в процедуру грамматического разбора для проверки, является ли текущий символ допустимым начальным символом анализируемой конструкции. Это рскомендуется во всех случаях, когда про.

цедура Х вызывается безусловно, как в операторе !1 аут =а, !Ьеп 5, е)зе Ц лутц=а„!Ьеп 5„е(ве Х который получен из порождающего правила А н= а,5, !... ! а„5„!Х. (5.18) В этих случаях параметр з! должен содержать лпгогкество начальных символов Х, а з2 — множество внешних символов А (см. табл. 5.2). Подробно эта процедура показана в программе 5.5, которая представляет собой дополненную версию программы 5А. Для удобства читателя вся программа приведена полностью, за исключением инициации глобальных переменных и процедуры де!зуат, оставшихся без изменений, Предполагаемая до сих пор схема пытается возобновить грамматический разбор, вернуться на правильный путь, пропустив одпн илн более символов входного текста. Но это неудачная стратегия во всех случаях, когда ошибка вызвана пропуская символа.

Опыт говорит о том, что такие ошибки фактически связаны с символами, выполняющими чисто сингаксическпс функции и пе представляющими какого-либо действия, Примером слугкит точка с запятой в ПЛ/О. Однако, поскольку множества внешних символов дополнены определспнымн служсбнымн словами, на самом деле грамматический разбор вовремя прекращает пропуск символов, т. е. ведет себя так, аак если бы забытый символ был в тавлен. Зто видно пз той части программы (5.19), которая анализирует б.й. Восггалоалекие крк синтаксических ошибках 363 со».гавные операторы.

Оиа «всгавляет»> пропущенные точки с .шнятой перед ключевымп словами. Множество, называемое иггггйензуз, есть множество начальных символов конструкции «оператор». 11'лунг = Ьефагуггг 1)гев )гей!и де!луги; лгагетепг((зепггео!оп, енгггут)+..глуе); чтйе лут пг 1гетгео(оп)+лгагЬе3луе бо Ьерн (5.19) 1г лунг = нет!со!оп 1)гев яеггут е1ве еж о!; кгагегггеггг(!реггггсо1огг, елй угп)+Хвой евд; 11' еупг = еиггдут 1)геи яеглут е)ае еп ог Енгй О том, насколько успешно эта программа обнаруживает синтаксические ошибки и справляется с необычнымн ситуациями, можно судить по программе ПЛ/О (5.20), Ее распечатка является результатом работы программы 5.5, а в табл.

5.3 перечислены возможные сообщения об ошибках, соответствующие номерам ошибок в программе 5,5, Таблица 3.3, Сообщения об ошибках, выдаваемые транслятором с ПЛ10 !. = вместо ".= 2. г!ет числа после = 3. Нет = после иденпгфнквгора 4, Нет идентификатора после сопз1, чаг, ргосебпге б. Пропущена злпятая нли точкз с запятой 6. Неверный символ после описания процедуры 7, Пет оперзторз 8, Неверный символ после операторной части блока 9. Нет многоточия 1О. Пропущена точка с запитой мелгду операторами 11. Неописанный идентификатор !2.

Недопустпмое присвапваняе константе или процедуре, 13 Требуется: = 14. Нет идентификатора после сан 13. Вызов констагпы илн переменной вместо процедуры 16. Требуется 1иео 17. Требуется точка с запятой илн епб 18 Требуется до 19. Неверный символ после оператора 20. Требуется сравнеяпе 2! Выражение содержит идентификатор процедуры 22 Отсутствует правая скобка 23 Неверный сичвол после множителя 24 Неверный символ в начале выражения 30. Слншкои большое число Программа (5.20) получена в результате намеренного вве.

дсппя синтаксических ошибок в (5,!4) — (5.15). сапа! п1 "".= "0 и — — хп гаг,г,г,:,с,г! е 5 5 ргссейпге тп!ф!у; гаг а,й Ьса!па:=- и; Ь:= у, а;= 0 111 пЫ!еЪ > Ойо !10 Ьеа!п ияЫЬйо=;= ~+ а! !16 !19 а:= 2а; Ь:=- Ь/2! .! 23 епй епй; рсоссйоге к!!г!к!с так !г; 5 сопок Ьо — — 2, к1псс:= 3; 7 1 Ъса!па = х; д != 0; к!:= у; !!3 пЬ!!е гг .- г йо ж;=- !асс!с! ъЬ!!е и~ > у Ъеа!ад~:= (2гд; !г != н/2)! т22 !23 !1н < ! !Ьсп Ьед!и г:= г-и' д:= 9+1 [23 епй спй епй; ркоссйоке усй; гаку",д; Ъсй!и,1;= г! .с ~= у 367 дд Ноеетапоалеепе при епчтаксипеектст ошибка.т мЫ!еу' -'- к де 717 Ъей!и !1/' < и !1теп д,'= К вЂ” 7'.

К я < у !Пев 1': =- .т — к; и:=,т епе1; Ьеи!и х:= пт; у:= и; саП тн16р1у1 х:= 25; у;= 3; саП с1ЬЫе; х .= 84; у:= Зб; саПнеФ; саП х„'х:=- ясе1; все! =х )15 721 т12 ~13 !24 спи, 717 75 77 РНОЯИАМ!НСОМРЬВТЕ (5.20) Депд — ' ' ~ьаа!и 7 Рис. 66. Синтаксис с модифиппрованнмм составным оператором, Любая схема восстановления, реализованная с раразумнымн затратамп, потерпит неудачу, т, е. не сможет адекватно обработать некоторые ошибочные конструкции,~Однако хороший транслятор должен обладать такими важными свойствами; 1.

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

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

Список файлов учебной работы

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