Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 44

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 44 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 442019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Если предположить, что процесс вычисления проходит вверх по дереву синтаксического анализа, то нетерминальный символ, находящийся в правой части, уже имел бы приписанное ему значение. В таком случае синтаксическое правило потребовало бы наличия функции, вычислившей значение левой части правила, которое, в свою очередь, представляет собой значение всей правой части. 163 З.б.

Описание смысла враграмм: динамическая семантика Пусть область определения семантических значений объектов представляет собой множество неотрицательных десятичных целых чисел Х. Это именно те объекты, которые мы хотим связать с лвоичными числами. Семантическая функция Мь,„отображает синтаксические объекты в объекты множества Х согласно указанным выше грамматическим правилам. Сама функция Ми„опрелеляется слелуюшим образом: Ми„(0)=0 Мьы( ! ) Мы„(<двоичное число> '0') = 2 ' Мъ„(<двоичное число>) Мь,„(<двоичное число> '1') = +2 ' Мъ„(<двоичное число>) + 1 Отметим.

что мы заключилн синтаксические цифры в апострофы, чтобы отличать их от математических цифр. Отношение между этими категориялчи подобно отношениям между цифрами в кодировке АБС!! и математическими цифрами. Когда программа считывает число как строку, то прежде, чем это число сможет использоваться в проврамме, оно должно быть преобразовано в математическое число. Значения, или обозначенные объекты (которыми в паннам случае являются десятичные числа), могут быть приписаны к узлам указанного выше дерева синтаксического анализа, образуя дерево, показанное на рис. 3.11. Это — синтаксически управляемая семантика. Синтаксические сущности отображаются в математические объекты, имеюшие конкретное значение.

6 <двоичное чисвоз ~ ! ! Рис. 3.П. Дерево синтаксического анапы за числа I /О с обозначенными абъектиии Приведем подобный пример лля описания значения десятичных синтаксических лнтерачьных констант, который поналобится нам в дальнейшем, <десятичное число>еО!1!2!3!4!5!6!7!8!9 ! <десятичное число>( 0 1 1 !2 ! 3 ! 4 ! 5 ! 6 ! 7 ! 8 ! 9) Денотационные отображения для этих синтаксических правил имеют следующий вид: Меч('0')=О,Ме.с('1'),Мвчс('2',",Ми~с('9') 9 Мв (<десятичное число> '0') = 10' Мв (<двончное число>) Мв„,(<десятичное число> '1') = 1О ' Мв «десятичное число>) + 1 Мв„(<десятичное число> '9') = 10 ' Мв„(<десятичное число") + 9 Глава 3.

Описание синтаксиса и семантики В слелующих разлелах мы прелставим ленотационные семантики лля нескольких простых конструкций. Важнейшил1 слеланным злесь упрощением является прелположение о том, что и синтаксис. и семантика конструкщай корректны. Помимо этого, предполагается, что существует только два скалярных типа — целый и булевскиИ. 3.6.3.2. Состояние программы Денотационную семантику программы можно опрелелить в терминах изменений состояния идеального компьютера. Подобным образом определялись операционные семантики. приблизительно так же определяются и денотационные.

Правда. лля простоты они определяются только в терминах значений всех переменных. объявленных в программе. Операционная и ленотационная семантики различаются тем. что изменения состояний в операционной семантике определяются запрограммироваиньв|и алгоритмами, а в денотационной семантике они определяются строгими математическими функциями. Пусть состояние з программы определяется следующим набором упорядоченных пар: (<Б, т~>, <ьл тз>, ..., <(„, ч„>( Каждый параметр ~ является именем переменной, а соответствующие параметры ч являются текущими значениями данных переменных. Любой из параметров т может иметь специальное значение нибеГ, указывающее, что связанная с ним величина в данный момент не определена.

Пусть ЧАИМАР— функция двух параметров, имени переменной и состояния программы. Значение функции ЧАИМАР((л з) равно т; (значение, соответствующее параметру 1> в состоянии з). Большинство семантических функциИ отображения для программ и программных конструкций отображают состояния в состояния. Эти изменения состояний используются для определения смысла программ и программных конструкций. Отметим, что такие языковые конструкции, как выражения, отображаются не в состояния, а в величины. 3.6.3.3. Выражения Выражения являются основой большинства языков программирования и не имеют побочных эффектов. Более того, мы имеем дело только с очень простыми выражениями. Единственными операторами являются операторы + и ', выражения ма~уз солержать не более одного оператора; единственными операнлами являются скалярные переменные и целочисленные литеральные константы; круглые скобки не используются; значение выражения является целым числом.

Ниже слелует описание этих выражений в форме БНФ: <выражение> ~ <десятичное число> ! <перемеиная> !<двоичное выражение> <двоичиое выражение> -э <выражение слева> <оператор> <выражение справа> <оператор> -э +1~ Единственной рассматриваемой нами ошибкой в выражениях является неопределенное значение переменной. Разумеется, могут появляться и другие ошибки, но большинство из них зависят от машины. Пусть Š— набор целых чисел, а еггег — ошибочное значение. Тогда множество с н (еггог( является множеством значений, для которых выражение может быть вычислено. Ниже приведена искомая функция отображения для данного выражения Е и состояния з.

Чтобы отличать определения математической функции от операторов присваива- З.б. Описание смысла программ: динамичвскав семантика ння языков программирования. для определения математических функций мы использо- вали символ д= М,(< выражение >,з) д= сазе < выражение > ог < десятичное число » = М~ (< десятичное число >, з) < переменная » = !Г ЧАКМАР (< переменная >, з) = надет Йеп еггог еЬе ЧАКМАР(< переменная >, з) < двоичное выражение»= 1ЯМ,(< двоичное выражение >.< выражение слева >, з) = ввдеГОй М,(< двоичное выражение >.< выражение справа >, з) = инаят) Йеп еггог е!зе !Г(< лвоичное выражение >.< оператор > = '+' Йеп М, (< двоичное выражение >.< выражение слева >, з) + М,(< двоичное выражение >.< выражение справа >,з) е(зе М,(< двоичное выражение >.< выражение слева >,з) ' М,(< двоичное выражение >.< выражение справа >, з) 3.6.3.4.

Операторы присваивания Оператор присваивания — зто вычисление выражения плюс присваивание его значения переменной, находящейся в левой части. Сказанное можно описать следующей функцией: М,(х = Е, з) о= !т" М,(Е, з) = еггог Йеп еггог еЬе з'= (< 1,', ч,' >, < !т', ч.; >,..., < ь';ч,'>» епеге Рог) = 1,2, ..., и, ч,'=ЧА)(МАР(1„, з) !Г! <>х; М (Е, з) !(1, = х Отметим, что два сравнения, выполняющиеся в двух последних строках (1„<> х и 1, = х), относятся к именам, а не значениям. 3.6.3.5. Логически управляемые циклы с предварительной ироверкойусловия Денотационная семантика простого логически управляемого цикла обманчиво проста.

Для простоты дальнейшего обсуждения предположим, что существуют две другие функции М„ и Мь, отображающие списки операторов в состояния, а булевские выражения — в булевские значения (или значение еггог), соответственно. Эта функция имеет следующий вид: М~(нЬЕ1е В ао !., 5) о = 1Г МЫВ, 3) = ввает Йеп еггог е!зе (т" Мь(В, з) = Га!зе Йеп з е1зе !Г Мя(1, з) = еггог Йеп еггог еЬе М~(нЬь1е Ь ао 1., Мя(1., |)) Глава 3. Ооисцние синтаксисе и семантики Значение цикла является просто значением переменных, объявленных в программе, после заданного количества выполнений операторов цикла (предполагается. что ошибок при этом не было).

В сущности, цикл был превращен из итерации в рекурсию. причем контроль над последней математически определялся другиыи рекурсивными функциями отображений состояний. Математически строго описать рекурсию легче, чем итерацию. Это определение, подобно реальным циклам программ, может ничего не вычислять вследствие своей бесконечности. 3.6.3.6.

Оценке Объекты и функции, подобные использованным в приведенных выше выражениях, могут определяться и для других синтаксических сущностей языков программирования. После определения полной системы для заданного языка ее можно использовать лля определения смысла полных программ этого языка. Это создает основу лля очень строгого способа мышления в программировании.

Денотационная семантика может использоваться для разработки языка. Например, операторы, описать которые с помощью денотационной семантики трудно, могут оказаться сложными и для понимания пользователями языка, и тогда разработчику следует подумать об альтернативной конструкции. Значительное количество работ было посвящено возможности использования денотационных описаний языка для автоматического порождения компиляторов ()опез, 1980; М!1оз ег а!..

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

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

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

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