Целью работы является практическое изучение процесса спецификации программы с помощью операционной семантики.
Итоговым документом выполнения лабораторной работы является отчет, состоящий из следующих пунктов.
1. Титульный лист.
2. Цель работы.
3. Текст задания.
4. Решение задачи, представленное с помощью языка ПЯК.
5. Пример выполнения разработанной ПЯК-программы на SMS-машине с обоснованием выбора входных данных.
6. Выводы.
Формализацией семантики языка называется процесс отображения его конструкций на некоторую смысловую область, элементы которой определяют значение высказываний языка. В зависимости от целей формализации используется та или иная смысловая область. Наиболее широкое распространение получили следующие смысловые области:
1) абстракция вычислительной машины;
2) математические функции;
3) математическая логика.
На основе этих смысловых областей и способов отображения синтаксиса языка на них были сформированы следующие виды семантик:
1) Операционная семантика.
2) Денотационная семантика.
3) Аксиоматическая семантика.
Операционная семантика определяет значение программных выражений в терминах последовательности вычислений, денотационная – в терминах элементов некоторых математических структур, а аксиоматическая – опосредованно, с помощью аксиом и правил в некоторой логике над программными свойствами. Один из самых простых вариантов реализации операционной семантики заключается в использовании системы переходов.
Система переходов имеет две составляющие – множество конфигураций (состояний) и бинарное отношение .
Определение 1. Термины и условные обозначения системы переходов .
1) обозначает бинарное отношение на множестве , которое является рефлексивно-транзитивным замыканием отношения . Другими словами, отношение имеет место только в том случае, если
имеет место для некоторой последовательности , где , а ситуация интерпретируется как .
2) обозначает, что не существует такого состояния , для которого имеет место .
3) система переходов называется детерминированной, если для любых имеет место
(иногда используют термин «моногенная»).
4) часто и множества выделяются подмножества и , содержащие элементы, которые называются начальными и конечными состояниями соответственно. Тогда пара представляет выполнение системы переходов. При этом если тогда . Состояния, удовлетворяющие условию , называются отказами.
Исторически, первый подход к выработке математически строгой операционной семантики программных языков был реализован в терминах абстрактной машины – системы переходов, определяющей интерпретатор языка. Рассмотрим пример, иллюстрирующий данный подход применительно к языку, который назовем простым языком команд (ПЯК). Мы будем использовать абстрактную машину, которая часто называется SMC-машиной. Возникновение данного имени обусловлено тем, что конфигурация машины может быть описана как тройка , где - стек (промежуточных или конечных) результатов, - память, то есть отображение множества целых чисел на некоторое конечное множество адресов, а - управляющий стек выражений, подлежащих разбору. Перейдем к описанию языка ПЯК.
Выражения
Команды
Целочисленные выражения
Логические выражения
Вспомогательные определения:
- множество целых чисел;
- множество логических значений;
- постоянное бесконечное множество символов, чьи элементы называются адресами (или программными переменными), так как они используются для хранения целых чисел; целочисленное выражение обозначает значение, которое содержится по адресу (или которое имеет переменная );
- постоянное конечное множество целочисленных бинарных операций;
- постоянное конечное множество логических бинарных операций.
ПЯК является довольно простым для описания языком. Реализация числовых алгоритмов с помощью этого языка основывается на управлении изменением состояний. В этом контексте мы можем считать, что состояние инкапсулирует конечное число адресов (регистров), в которых хранятся целые числа. Целочисленные и логические выражения описывают целые и логические значения, независящие от состояния. Команды ПЯК описывают операции изменения состояний.
Конфигурация
Управляющий стек
Стек (промежуточных и конечных) результатов
Память состояний
- частичная функция, отображающая адреса на целые числа, определенная только на конечном множестве адресов.
Нетрудно увидеть, что описанная SMC-машина определяет детерминистическую систему переходов. Этот факт обусловлен тем, что вершина управляющего стека уникально определяет следующий тип перехода (если таковой имеется), за исключением тех случаев, когда первым в стеке находится или , когда следующий переход определяется вершиной стека .
Определим начальные конфигурации в форме , где - команда ПЯК, а - состояние. Определим также конечные конфигурации как . Выполнение ПЯК-программы на SMC-машине описывается выражением , которое означает, что успешное выполнение команды в состоянии влечет переводит SMC-машине в состояние .
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.