Главная » Просмотр файлов » Языки и методы формальной спецификации

Языки и методы формальной спецификации (1158803), страница 9

Файл №1158803 Языки и методы формальной спецификации (Языки и методы формальной спецификации) 9 страницаЯзыки и методы формальной спецификации (1158803) страница 92019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Аналогично, если:

  • максимальный тип t1 приводим к максимальному типу t2,

  • максимальный тип t3 приводим к максимальному типу t4,

  • t1 и t3 не имеют наименьшей верхней границы,

  • t2 и t4 имеют наименьшую верхнюю границу t,

  • два выражения типов t1 и t3 соответственно встречаются в контексте, который требует, чтобы они имели наименьшую верхнюю границу.

Тогда говорят, что имеют место неявные приведения типов указанных двух выражений t1 к t2 и t3 к t4 соответственно. Эта формулировка может быть обобщена для набора произвольного количества выражений.

Контекстные условия. Неявные приведения типов должны быть однозначными.

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

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

Для каждой конкретной разновидности выражения value_expr ниже определены соответствующие максимальные типы и описания статического доступа.

6.2. Литералы (Value Literals)

Синтаксис.

value_literal ::=

unit_literal

bool_literal 

int_literal

real_literal

text_literal

char_literal

unit_literal ::=

()

bool_literal ::=

true

false

Значением метапеременной int_literal является любая непустая строка цифр. Значением метапеременной real_literal являются две непустые строки цифр, разделенные десятичной точкой. Метапеременная text_literal представляет собой текст (возможно, пустой) в двойных кавычках. Значением метапеременной char_literal является любой допустимый в RSL символ, взятый в апострофы.

Атрибуты. Максимальным типом unit_literal является Unit.

Максимальным типом bool_literal является Bool.

Максимальным типом int_literal является Int.

Максимальным типом real_literal является Real.

Максимальным типом text_literal является Char.

Максимальным типом char_literal является Char.

Выражение value_literal не производит статически доступа к каким-либо переменным или каналам.

Семантика. Результирующее воздействие выражения value_literal заключается в возвращении значения, представленного указанным литералом.

Текстовый литерал вида "c1cn" представляет собой сокращенную запись выражения c1, …,cn.

6.3. Имена

Контекстные условия. Для выражения value_expr, являющегося именем name, это имя должно представлять какое-либо значение или переменную.

Атрибуты. Максимальный тип имени name определен в разделе 10.

Имя name, представляющее некоторое значение, не производит статически доступа к каким-либо переменным или каналам. Имя name, представляющее переменную, статически производит чтение из этой переменной и не имеет другого статического доступа.

Семантика. См. раздел 10.

6.4. Пред-имена (Pre-names)

Синтаксис.

pre_name ::=

variable-name`

Контекст и правила видимости. Если в ближайшем объемлющем постусловии присутствуют какие-либо определения локальных переменных, они не видимы в данном имени name.

Контекстные условия. Выражение pre_name должно появляться внутри постусловия.

Имя name должно представлять некоторую переменную.

Атрибуты. Максимальным типом имени pre_name является максимальный тип входящего в это выражение имени name.

Выражение pre_name статически производит чтение переменной, которое оно представляет, и не имеет другого статического доступа.

Семантика. Выражение pre_name встречается внутри постусловий (см. раздел 6.13.). Результирующее воздействие выражения pre_name состоит в том, чтобы вернуть содержание переменной, представленной именем name, в пред-состоянии (pre-state).

6.5. Базисные выражения (Basic Expressions)

Синтаксис.

basic_expr ::=

chaos

skip

stop

swap

Атрибуты. Максимальным типом выражения skip является Unit. Максимальным типом выражений chaos, stop и swap может быть любой максимальный тип.

Выражение basic_expr не производит статически доступа к каким-либо переменным или каналам.

Семантика.

  • Результирующее воздействие выражения chaos расходится.

  • Результирующее воздействие выражения skip заключается в возвращении значения типа Unit.

  • Результирующим воздействием выражения stop является тупиковая ситуация.

  • Результирующее воздействие выражения swap не специфицируется; это может быть завершение, переход в тупиковую ситуацию, разрешение внутреннего выбора или расходящийся процесс.

6.6. Декартовы произведения (Product Expressions)

Синтаксис.

product_expr ::=

( value_expr-list2 )

Атрибуты. Максимальным типом выражения product_expr вида (value_expr1,…, value_exprn) является декартово произведение t1 ´ … ´ tn, где t1, …, tn являются соответственно максимальными типами выражений value_expr1, …, value_exprn.

Выражение product_expr статически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выражения value_expr.

Семантика. Результирующее воздействие выражения product_expr вида (value_expr1,…, value_exprn) состоит в вычислении слева направо значений vi каждого составляющего выражения value_expri, после чего возвращается значение декартова произведения (v1,…,vn).

6.7. Множественные выражения (Set expressions)

Синтаксис.

set_expr ::=

ranged_set_expr ½

enumereted_set_expr ½

comprehended_set_expr

6.7.1. Множества, заданные диапазоном (Ranged Set Expressions)

Синтаксис.

ranged_set_expr ::=

{ readonly_integer-value_expr .. readonly_integer-value_expr }

Контекстные условия. Входящие в данную конструкцию выражения value_expr должны представлять собой read-only выражения и их максимальный тип должен быть Int.

Атрибуты. Максимальным типом выражения ranged_set_expr является Intinfset.

Выражение ranged_set_expr статически производит чтение из тех переменных, из которых статически производят чтение составляющие его выражения value_expr, и не имеет другого статического доступа.

Семантика. Результирующее воздействие выражения ranged_set_expr заключается в возвращении множества целых чисел в диапазоне, ограниченном нижней и верхней границами. При этом первое выражение value_expr вычисляется и возвращает нижнюю границу i1, затем вычисляется второе выражение value_expr и возвращает верхнюю границу i2. Результирующее множество содержит все целые числа i такие, что i1  ii2. Если i1i2, множество пусто.

6.7.2. Множества, заданные перечислением (Enumerated Set Expressions)

Синтаксис.

enumerated_set_expr ::=

{ readonly-opt-value_expr-list }

Контекстные условия. Входящие в данную конструкцию выражения value_expr должны представлять собой read-only выражения.

Максимальные типы составляющих выражений value_expr должны иметь наименьшую верхнюю границу.

Атрибуты. Максимальным типом выражения enumerated_set_expr, имеющего в своем составе одно или более выражений value_expr, является t-infset, где t – это наименьшая верхняя граница максимальных типов этих составляющих выражений value_expr. Максимальным типом выражения enumerated_set_expr, не имеющего составляющих выражений value_expr (пустое множество), является t-infset, где t – это типовая переменная, представляющая произвольный максимальный тип.

Выражение enumerated_set_expr статически производит чтение из тех переменных, из которых статически производят чтение составляющие его выражения value_expr, и не имеет другого статического доступа.

Семантика. Результирующее воздействие выражения enumerated_set_expr заключается в возвращении множества явно специфицированных значений. При этом результирующее воздействие выражения enumerated_set_expr вида {value_expr1,…, value_exprn} достигается путем вычисления слева направо значений vi каждого составляющего выражения value_expri, после чего возвращается значение в виде множества {v1,…,vn}. Если список value_expr‑list отсутствует, возвращается пустое множество.

6.7.3. Сокращенные множественные выражения (Comprehended Set Expressions)

Синтаксис.

comprehended_set_expr ::=

{ readonly-value_expr ½ set_limitation }

set_limitation ::=

typing-list opt-restriction

restriction ::=

readonly_logical-value_expr

Контекстно-независимые расширения. Пустое ограничение nil‑restriction представляет собой сокращение ограничения ‘• true.

Ограничение ‘• value_expr’ является сокращенной записью ограничения ‘• value_expr  true’.

Контекст и правила видимости. В выражении comprehended_set_expr контекст ограничения set_limitation расширяется до выражения value_expr, входящего в состав данного выражения.

Непосредственным контекстом конструкций typing, входящих в состав ограничения set_limitation, является ограничение restriction, входящее в тот же состав.

Контекстные условия. Входящее в состав выражения comprehended_set_expr выражение value_expr должно представлять собой read-only выражение.

Входящее в состав ограничения restriction выражение value_expr должно представлять собой read-only выражение и его максимальный тип должен быть Bool.

Атрибуты. Максимальным типом выражения comprehended_set_expr является t-infset, где t – это максимальный тип входящего в его состав выражения value_expr.

Выражение comprehended_set_expr статически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выражение value_expr и ограничение set_limitation.

Конструкция set_limitation, в которой присутствует ограничение restriction, статически производит доступ к тем переменным и каналам, к которым статически обращается данное ограничение restriction.

Ограничение restriction статически производит чтение из тех переменных, из которых статически производит чтение входящее в его состав выражение value_expr, и не имеет другого статического доступа.

Семантика. Результирующее воздействие выражения comprehended_set_expr заключается в возвращении множества, элементы которого получаются путем вычисления выражения value_expr во всех моделях, удовлетворяющих заданному ограничению.

Для каждой модели из множества моделей, представленного ограничением set_limitation (см. ниже), вычисляется указанное выражение value_expr. Вычисление выражения comprehended_set_expr представляет собой сходящийся процесс.

Конструкция set_limitation представляет некоторое подмножество моделей, которые удовлетворяют определениям, заданным в списке typing-list, и для которых выполняется ограничение restriction.

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

Тип файла
Документ
Размер
776,5 Kb
Тип материала
Высшее учебное заведение

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

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