Язык проектирования программ PDL

Страницы работы

Фрагмент текста работы

initial     имя := значение      Если имя является элементом поля S, то значение записывается в стек; в противном случае имя добавляется в поле S и значение записывается в его стек.

free  имя                               Если имя является элементом S, то вершина его стека удаляется, если после этого стек становится пустым, то удаляется имя из поля S; в противном случае операция не может быть выполнена.

Пример.

Допустим, что x и z являются активными записями и S: ( x: ('ab'),  z: (8,1))

scalar y : целый                     S: ( x: ('ab'),  z: (8,1))

y := z                                       S: ( x: ('ab'),  y: (8),  z: (8,1))

initial y:=3                              S: ( x: ('ab'),  y: (3,8),  z: (8,1))

y := z                                       S: ( x: ('ab'),  y: (8,8),  z: (8,1))

free z                                      S: ( x: ('ab'),  y: (8,8),  z: (1))

initial x := 'cd'                         S: ( x: ('cd', 'ab'),  y: (8,8),  z: (1))

free z                                      S: ( x: ('cd', 'ab'),  y: (8,8))

initial z := 0                            S: ( x: ('cd', 'ab'),  y: (8,8),  z: (0))

6.  Внутренний синтаксис

6.1.  Выражения внутреннего синтаксиса

Операции над данными основываются на обработке арифметических, логических и символьных данных, а также таких объектов данных языков программирования высокого уровня, как символьные строки , числа и логические переменные. Мы будем использовать обычные соглашения, выделяя строки символов кавычками, представляя числа в вещественной и целой формах, а логические переменные ключевыми словами true илиfalse языка PDL. Имена данных выражаются буквенно-цифровыми строками (без кавычек), начинающимися буквами.

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

6.2.  Типы данных

Тип данных – это множество объектов, в котором объединяются 1) множество операций, 2) множество тестов  и 3) множество символов. Например, целое³0 является типом данных с операциями +, *, тестов =, >, и множеством символов в виде десятичных или двоичных цифровых строк. Спецификация типа данных обозначается ключевым словом type, которое определяет имя типа и таблицу операций и тестов.

Когда тип данных имеет общеизвестное определение, содержание таблицы операций и тестов следует из имени типа или ссылки к последнему. Например,

type целое³0

предполагает таблицу операций и тестов, начало которой имеет вид

целое³0

целое³0

+

*

=

0

0

0

0

истина

ложь

0

1

1

0

ложь

ложь

1

0

1

0

ложь

истина

0

2

2

0

ложь

ложь

1

1

2

1

истина

ложь

2

0

2

0

ложь

истина

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

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

type днинедели = {Пн, Вт, Ср, Чт, Пт, Сб, Вс}

Здесь операции и тесты заданы неявно в форме списка. Определение типа данных указанием интервала задается как список из двух крайних элементов упорядоченной последовательности, все элементы которой находятся между двумя крайними элементами списка. Например,

type рабочиедни = {Пн...Пт}

где тип "рабочие дни" имеет элементы Пн, Вт, Ср, Чт, Пт

Описания типов данных внутреннего синтаксиса могут приписываться к описаниям данных внешнего синтаксиса. Например, в выражении

scalar a, b : целый двоеточие служит разделителем списка описаний, а имя типа данных внутреннего синтаксиса "целый" определяет допустимые значения и тип операций

Информация о работе