Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 49

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 49 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 492019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Например, стек, содержащий цифры 1, 5, 3, может быть получен следующим образом: роайроаМроаП(пееаасл, 1). Вк 3) Хотя не существует формальной модели разработки алгебраических аксиом, с успехом применяется следующий эвристический подход. Генерируется аксиома для каждой функции с каждым конструктором и генератором. Поскольку в нашем примере со стеком имеются три функции, один конструктор и один генератор, то 4.2. Семантика языка 175 у нас получается шесть аксиом. Если уже написана левая часть выражения для аксиомы, ее значение (правую часть выражения) обычно легко определить. Например, для функции гор и конструктора риз)) аксиома выглядит следующим образом; гор(роай(5.

1)) - ... Интуитивно ясно, что верхним элементом стека должен быть тот, который только что добавлен, поатому аксиома получается такая: (ор(рить(5, П > = 1 Продолжая в том же духе, мы получим следующие аксиомы: 1. Рор(пеиагаск> = пеиагаск 2: рор(роли(5, 1) - 5 3 Сор(пеиагаск> = ипаен пей 4, Гор(риащ5, 1> = 1 5: еир(у(пека(ась> - ггие б пирсу(роЖ5. 1> = (а)ае 7; ю ге(пеиагасг) = 0 8 юге(риащ5. 1) = юге(5) г 1 Эти аксиомы часто называются правилами перезаписи, при помощи которых можно перезаписать экземпляр какого-либо объекта в более простом виде.

Согласно приведенной спецификации, операция ризй возвращает экземпляр стека (5Оасг), сконструированного из уже имеющегося стека и некоторого целого числа. Например, запрос может быть сформирован как выполнение операции пеизсаск, затем риз)) и еще раз ризй, затем рор и, наконец, выполнение функции еп)рту: юр(у(рор(риал(риащпеиагасх, 42) 17) > Уг)ификация этого выражения при помощи аксиомы 2 позволяет упростить его за счет сокращения рор и рцэй — противоположных по своему действию операций, следующих друг за дру гол(. Тогда выражение принимает следующий вид; еир(у(риал(пека(ась.

42>)) Теперь мы можем использовать аксиому 6 и упростить это выражение до 1а15е. Нам удалось модифицировать выражение таким образом, что функция еа)рту применяется только к суперпозицни конструктора и генератора и выдает значение 1а)эе. Это является иллюстрацией к нашему рассказу о конструкторах, Алгебраическое выражение, состоящее только из генераторов и конструкторов, называется канонической, нли нормальной, формой выражения. Индукция типов данных Пусть дан набор аксиом сто есть отношений) между множеством операций алгебраического типа данных.

Часто требуется проверить истинность определенных свойств. Затем зти свойства становятся обязательными для всех программ (например, на С или на Рааса)), реализующих данную спецификацию. И>гдукг(ия типов данных — это один из способов проверки подобных свойств, Он тесно связан с методом математической индукции. Пусть Р(у) — некий предикат, связанный с у е х. При каких условиях Р всегда будет истинец для любых членов типа х? Как и в случае математической индукции, можно доказать, что Р будет истинно для любых элементарных объектов этого типа'. Помог бктм математической иилукиии.

— Примеч науч Ред. 176 Глава4. Моделирование свойств языка Затем мы можем показать, что при конструировании новых объектов того же типа из элементарных наше свойство Р по-прежнему остается истинным. Индукция типом данных определяется следующим образом. 1. Имеется тип данных х с генераторами Гп конструкторами д„другиии функ- цняМИ Пп а таКжЕ ПредИКат Р(у) дпя у Е Х. 2.

Нужно показать, что Р((,) истинно. Это является базой индукции для доказательства — значение прсдиката на функциях-генераторах истинно. 3, Предположим, что Р(у) истинно. Нужно показать, что из этого следует истинность Р(д,(у) ). Тогда можно расширить предикат Р на все объекты, созданные посредством применения генератора и последуюп(его применения конструкторов.

4. Тепсрь можно сделать вывод, что Р(у) истинно для всех у, принадлежащих типу х. Для нашего примера со стеком нужно показать, что прсликаты Р(пеивгасХ) и Р(рцвл(х, 1) ) истинны. Используя индукцию типов данных, можно показать, что добавление в стек нового объекта увеличивает размер стека, то есть вяге(ропп(5. х)) > юге(5) Доказательство этого утверждения вы найдете в примере 4.2. ПРИМЕР 4.2. Индукция типов данных 1. Для доказательства иСтинноСти пРедиката Р(5) > ваге(раап(5.Х)) > 5)ге(5) мы преобразуем его при помощи аксиом, которые будут применяться до тех пор, пока дальнейшее его упрощение не стане~ невозможно: и ге(рова(5, Х)) . вяге(5) — преаположение теоремы и ге(5) + 1 > вяге(5) — по аксиоме В 2.

Теперь мы применяем индукцию типов данных для того, чтобы доказать справедливость 5!ге(5) + ! > 5)ге(5) для генератора пеи51асХ и конструктора рпвл, тоесть нам нужнодоказать истинность Р(пеи51асг) и Р(ровп(5. я ) ). + База индукции. Заменим 5 на пенвгасХ и покажем истинность нашего предиката; 0 + 1 > 0 + Π— простой иатеиагимесний факт ввге(пеивгаск) > 1 > и ге(пеив(асв) — по аксиоие 7 Итак, для 5 = пеивгасХ теорема доказана и таким образом построена база для индукции. + Индукционныйпереход. Предположим,чтодля 5теорема выполняется, тоесть 5)ге(5) + 1 > впге(5). Покажем, что тогда она выполняется и для 5' = рцвл(5, Х): вяге(5) + 1 > вяге(5) — индукционное предположение вяге(5) + 1 + 1 > ю ге(5) + 1 — аобавии 1 н обеим насгям неравенства вяге(рыл(5.

Х)) + 1 > вяге(рова(5. Х)) — по ансионе В Итак, индукционный переход также выполняется, Вывод. Мы доказали, что вяге(рова(5, Х)) > ввге(5) выполняется для всех стеков 5. 4.4. Задачи и упражнения 177 4.3. Рекомендуемая литература Формальные модели синтаксиса, синтаксического разбора и трансляции широко использую~ся при анализе и реализации компиляторов и трансляторов 1см.

ссылки в конце главы 3). В работах Стансифера (5саттз11ег) [104] подробно обсуждается применение )ь-исчттсления и денотационной семантики при разработке языков программирования. Обзор методов формального определения семантики можно найти в работах Маркотти и др. (Магсоббу) [78]; там же вы найдете описание некоторых методов. В статье Хоара и Лаусра (1апег) [52] приведен сравнительный анализ нескольких методов определения семантики простого языка. Лукас (1лсаз) и Уолк ("ттт'а]]с) [75] описали операционный метод, называемый Лепна Пе/ттгтоп!.апдиаде, который был использован для формального определения семантики языка Р1./1. В [5] представлена большая часть формального определения семантики Ат]а; аксиоматическое определение большинства конструкций языка Рааса! дано в работе Хоара [51].

Обзор методов верификации программ вы найдете в [123] и книге Ганнона (Саттпоп), Пуртило (Рпгб!о) и Зелковица (2е][соьг1бх) [43]. Алгебраические типы данных исследовались Гуттагом (Спббай) [48]. Метод формальной спецификации Челна Пепе1ортепб МеГЬос7 ('ьтПМ) описан в книге [61], а метод Х -- в статье [103], В этой главе мы смогли коснуться лишь некоторых нз многих изящных теоретических моделей и результатов исследований в области семантики программ, универсальных языков и абстрактных машин типа машин Тьториттта. 4.4. Задачи и упражнения 1.

Пополните грамматику, приведенную в табл. 3.1, следующими НФБ-правилами: <про<раина> : <обьявпение> <списон оператороя. <обьявпение> <бес1> <обьявпение> [ <бес1> «бес1>:.= бес1аге <переиенная>: <список операторов>: =- <оператор присваивания> <список операторов> ! <оператор присваивания> Разработайте атрибутивную грамматику, для которой: + оператор присваивания определен корректно в том и только в том случае, если каждая переменная в этом операторе объявлена; + протраьтма определена корректно, если все операторы присваивания в этой программе определены корректно. 2.

Покажите, но язык, сгенерированный следующей грамматикой, является регулярным языком: 5 — т а5а[а 3. Палиндром — зто строка, которая читается в обе стороны одинаково. + Покажите, что множество палиндромов нечетной длины, составленных из символов ] а, Ь), является констекстно-свободным языком. 17В Глава 4. Моделирование свойств языка 5 7 8.

9. 10. + Покажите, что множество строк нечетной длгщы, составленных из символов 10, Ь), отличных от палиндромов, также является констекстно-свободным языком. + Почему для распознавания множества палиндромов нечетной длины требуется недетерминированный автомат с магазинной памятью, а детерминированный не годится7 Пусть имеется контекстно-свободная грамматика .= 050 ! 1з1 ) 0 ) 1 Изобразите дерево вывода для 0110110. Мы знаем, что для генерации строк типа а "Ь" требуется контекстно-свободная грамматика.

Рассмотрим следующую регулярную грамматику: 5:. - а5 ) Ь5 ) а ) Ь Утверждается, что эта грамматика также генерирует а Ь". Например, а'Ь' генерируется следующим образом: 5 ~ а5 ~ аа5 ~ ааа5 ~ аааЬ5 ~ аааЬЬ5 =~ аааЬЬЬ В данном случае мы видим, что при помощи грамматики типа 3 сгенерирован язык типа 2. Объясните зто противоречие. Модифицируйте все процедуры из листинга 3.1 так, чтобы получить постфиксную запись для арифметических выражений. Может ли регулярная грамматика распознавать определенный ниже язык для подмножества выражений7 Приведите объяснение. Объясните также основное различие между атой грамматикой и грамматикой всех возможных выражений Е-~Е+Т)Т Т-~Т*Р)Р Р->3 С помощью аксиоматического метода доказательства корректности программ: + покажите, что приведенные в тексте главы два условия окончания цикла ьл~1едействительногарантируютегозавершение(подсказка:чтопроизойдет, если оба условия истинны, а цикл не завершается?); + почему требуется, чтобы функция Т была целочислешгой? Докажите правильность следующей программы целочисленного деления: )х>Оху>0) 0 .-0 г =0 и1И1е у < г оо 0001 и г -г-у; а:-0 ° 1 епв )у» г х х = г + у х о) Что произойдет, если в листинге 4.1 окажется, что В меньше О? Для какой области значений А и 0 программа гарантированно завершается и дает правильный результат7 4,4.

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

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

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