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))
Операции над данными основываются на обработке арифметических, логических и символьных данных, а также таких объектов данных языков программирования высокого уровня, как символьные строки , числа и логические переменные. Мы будем использовать обычные соглашения, выделяя строки символов кавычками, представляя числа в вещественной и целой формах, а логические переменные ключевыми словами true илиfalse языка PDL. Имена данных выражаются буквенно-цифровыми строками (без кавычек), начинающимися буквами.
В конечном счете способ выражения операций и тестов над данными сводится к нахождению подходящей терминологии, удобной для получения специализированного контекста, рассчитанного на определенный круг пользователей. Неформальное описание, сделанное, например, в таком общем виде, как "отсортировать файл оперативных данных", может оказаться подходящим, если либо смысл операции достаточно понятен, либо детального значения не требуется.
Тип данных – это множество объектов, в котором объединяются 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 : целый двоеточие служит разделителем списка описаний, а имя типа данных внутреннего синтаксиса "целый" определяет допустимые значения и тип операций
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.