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

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

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

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

тогда тестовое значение должно быть декартовым произведением вида (v1,…,vn) и в дополнении к этому каждое значение vi должно сопоставляться с соответствующим внутренним образцом inner_patterni.

  • Результирующие определения: набор определений, получаемый путем сопоставления каждого значения vi с внутренним образцом inner_patterni.

9.6. Образцы записи (Record Patterns)

Синтаксис.

record_pattern ::=

pure_value-name ( inner_pattern-list )

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

name(inner_pattern1,…, inner_patternn) ( n  1 )

то параметрическая часть данного функционального типа должна иметь вид t1 ´ … ´ tn.

В образце записи record_pattern составляющие его внутренние образцы inner_pattern должны быть совместимы.

Атрибуты. В образце записи record_pattern вида name(inner_pattern) максимальным контекстным типом внутреннего образца inner_pattern является параметрическая часть максимального типа указанного имени name.

В образце записи record_pattern вида name(inner_pattern1,…, inner_patternn) максимальными контекстными типами внутренних образцов inner_pattern1,…, inner_patternn являются типы t1, …, tn соответственно, где тип параметрической части максимального типа имени name имеет вид t1 ´ … ´ tn.

Семантика.

  • Успешное сопоставление: пусть образец запись record_pattern имеет вид:

name(inner_pattern1,…, inner_patternn) ( n  1 )

и пусть v — тестовое значение, тогда должны существовать значения v1,…,vn такие, что:

v = name(v1,…, vn)

и в дополнении к этому каждое значение vi должно сопоставляться с соответствующим внутренним образцом inner_patterni.

  • Результирующие определения: набор определений, получаемый путем сопоставления каждого значения vi с внутренним образцом inner_patterni, при этом значения v1,…,vn недетерминированно выбираются таким образом, чтобы были выполнены условия успешного совпадения, описанные выше.

9.7. Образцы списки (List Patterns)

Синтаксис.

list_pattern ::=

enumerated_list_pattern 

concatenated_list_pattern

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

9.7.1. Образцы списки, заданные перечислением (Enumerated List Patterns)

Синтаксис.

enumerated_list_pattern ::=

 opt-inner_pattern-list 

Контекстные условия. Составляющие данную конструкцию внутренние образцы inner_pattern должны быть совместимы.

Атрибуты. Максимальным контекстным типом каждого внутреннего образца inner_pattern является тип элемента максимального контекстного типа содержащего их образца списка list_pattern.

Семантика.

  • Успешное сопоставление: пусть образец список enumerated_list_pattern имеет вид:

inner_pattern1,…, inner_patternn ( n  0 )

тогда тестовое значение должно представлять собой список вида v1,…,vn и в дополнении к этому каждое значение vi должно сопоставляться с соответствующим внутренним образцом inner_patterni.

  • Результирующие определения: набор определений, получаемый путем сопоставления каждого значения vi с внутренним образцом inner_patterni.

9.7.2. Образцы списки, заданные конкатенацией (Concatenated List Patterns)

Синтаксис.

concatenated_list_pattern ::=

enumerated_list_pattern ^ inner_pattern

Контекстные условия. Входящие в данную конструкцию образец список enumerated_list_pattern и внутренний образец inner_pattern должны быть совместимы.

Атрибуты. Максимальным контекстным типом образца списка enumerated_list_pattern и внутреннего образца inner_pattern является максимальный контекстный тип содержащего их образца списка concatenated_list_pattern.

Семантика.

  • Успешное сопоставление: пусть образец список concatenated_list_pattern имеет вид:

enumerated_list_pattern ^ inner_pattern

тогда тестовое значение должно представлять собой список вида l1 ^ l2, где l1 сопоставляется с образцом списком enumerated_list_pattern и l2 сопоставляться с внутренним образцом inner_pattern.

  • Результирующие определения: набор определений, получаемый путем сопоставления списка l1 с образцом списком enumerated_list_pattern и списка l2 с внутренним образцом inner_pattern.

9.8. Внутренние образцы (Inner Patterns)

Синтаксис.

inner_pattern ::=

value_literal ½

id_or_op ½

wildcard_pattern ½

product_pattern ½

record_pattern ½

list_pattern ½

equality_pattern

Для внутренних образцов используется общая для всех образцов терминология, атрибуты и контекстно-зависимые расширения (см. раздел 9.1).

Определения всех перечисленных здесь конкретных видов образцов кроме id_or_op и equality_pattern даны в разделах 9.2 – 9.7.

9.8.1. Идентификаторы или операции (Identifiers or Operators)

Контекстные условия. Максимальный контекстный тип для внутреннего образца inner_pattern, представляющего собой операцию op, должен быть каким-либо функциональным типом, различимым с максимальным типом (типами) предопределенного значения (значений) операции op. Если операция op является инфиксной операцией infix_op, то типом параметра данного функционального типа должен быть тип декартова произведения длины 2.

Атрибуты. В качестве максимального типа конструкции id_or_op, представляющей собой внутренний образец inner_pattern, принимается максимальный контекстный тип данного внутреннего образца inner_pattern.

Семантика.

  • Успешное сопоставление: все значения максимального контекстного типа успешно сопоставляются с идентификатором или операцией id_or_op.

  • Результирующие определения: пусть v является тестовым значением и t — максимальным контекстным типом конструкции id_or_op, тогда результирующим является следующее определение:

id_or_op : t = v

9.8.2. Образцы равенства (Equality Patterns)

Синтаксис.

equality_pattern ::=

= pure_value-name

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

Максимальный тип этого имени name (см. раздел 10) должен быть меньше или равен максимального контекстного типа содержащего его образца равенства equality_pattern.

Семантика.

  • Успешное сопоставление: значение, представленное именем name, должно быть равно тестовому значению.

  • Результирующие определения: нет.

  1. Имена

10.1. Общие замечания

Синтаксис.

name ::=

id

( op )

Атрибуты. Если имя name представляет некоторую схему, то для него определен максимальный класс, т.е. максимальный класс ассоциируемого с данным именем классового выражения. В случае параметризованной схемы у этого имени есть также некоторый формальный параметр схемы. Если имя name представляет какой-либо тип, значение, переменную или канал, то с ним (с именем) ассоциируется некоторый максимальный тип. Ниже для каждой из указанных альтернатив определены свои конкретные атрибуты.

Семантика. Имя name представляет некоторую сущность, которая является схемой, типом, значением, переменной или каналом.

10.2. Идентификаторы (Identifiers)

Атрибуты. Если имя name представляет собой идентификатор id, то его атрибутами являются атрибуты данного идентификатора id.

Семантика. Идентификатор id представляет сущность, с которой он связан соответствующим определением.

10.3. Операции (Operators)

Контекст и правила видимости. В конструкции name, являющейся операцией op, видны все предопределенные значения операций.

Атрибуты. Максимальным типом имени name, представляющим собой операцию, является максимальный тип этой операции op.

Семантика. Операция op представляет сущность, с которой она связана соответствующим определением.

Скобки превращают операцию op в функцию, которую можно применять в префиксной нотации как аппликативное выражение (см. раздел 6.10). С учетом того, что операция op может быть префиксной prefix_op или инфиксной infix_op, это означает выполнение следующих эквивалентностей:

prefix_op value_expr  (prefix_op )( value_expr )

value_expr1 infix_op value_expr2  (infix_op )( value_expr1, value_expr2 )

  1. Идентификаторы и операции

11.1. Общие замечания

Синтаксис.

id_or_op ::=

id

op

op ::=

infix_op ½

prefix_op

Терминология. Любое встречающееся в тексте вхождение идентификатора или операции (id_or_op, id или op) может быть связано либо с их определением — точка определения (defining occurrence), либо с их применением или использованием — точка использования (applied occurrence).

Точками определения считаются следующие вхождения:

  • идентификатора (идентификаторов) id, встречающегося непосредственно внутри определений scheme_def, sort_def, variant_def, union_def, short_record_def, abbreviation_def, prefix_application, infix_application, single_variable_def, multiple_variable_def, single_channel_def, multiple_channel_def, axiom_naming или id_or_wildcard;

  • идентификатора или операции id_or_op, встречающихся непосредственно внутри конструктора constructor, деструктора destructor, реконструктора reconstructor или связывания binding;

  • идентификатора или операции id_or_op, которые являются внутренним образцом inner_pattern.

Все остальные вхождения считаются точками использования данного идентификатора или операции.

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

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

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

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

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

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

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

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

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

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

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

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