Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Программа состоит из одного или нескольких модулей. Модуль определяет независимую часть программы.
ОПИСАНИЕ-МОДУЛЯ::= [ЗАГОЛОВОК-МОДУЛЯ] СПИСОК-ОПИСАНИЙ
ЗАГОЛОВОК-МОДУЛЯ::= module ИМЯ-МОДУЛЯ [ (ОПИСАНИЯ-АРГУМЕНТОВ) ];
ИМЯ-МОДУЛЯ::= ИДЕНТИФИКАТОР
Аргументы, описанные в круглых скобках, являются формальными параметрами модуля. Структура ОПИСАНИЙ-АРГУМЕНТОВ определена в разд. 6.3.1.
СПИСОК-ОПИСАНИЙ::= ОПИСАНИЕ (; ОПИСАНИЕ)*
ОПИСАНИЕ::=
ИМПОРТ-МОДУЛЯ | ОПИСАНИЕ-ТИПА |
ОПИСАНИЕ-ГЛОБАЛЬНЫХ-ПЕРЕМЕННЫХ |
ОПРЕДЕЛЕНИЕ-ПРЕДИКАТА | СПЕЦИФИКАЦИЯ-ПРЕДИКАТА |
ОПИСАНИЕ-ФОРМУЛЫ | ОПРЕДЕЛЕНИЕ-КЛАССА |
ОПИСАНИЕ-СООБЩЕНИЯ | ОПРЕДЕЛЕНИЕ-ПРОЦЕССА
ОПИСАНИЕ-ФОРМУЛЫ (см. разд. 6.9) определяет функцию или предикат; они встречаются в предусловиях, постусловиях и формулах. Три последние альтернативы ОПИСАНИЯ используются для задания процессов; см. разд. 6.10.
ИМПОРТ-МОДУЛЯ::=
import ИМЯ-МОДУЛЯ [ (АРГУМЕНТЫ)] [ as ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ ]
ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ::= ИДЕНТИФИКАТОР
Имена модулей, встречающиеся в описаниях данного модуля, должны быть определены конструкцией ИМПОРТ-МОДУЛЯ. Если импортируемый модуль имеет формальные параметры, то в круглых скобках задается соответствующий набор фактических параметров. Конструкция АРГУМЕНТЫ определена в разд. 6.3.3. Правила подстановки фактических параметров на место формальных те же самые, что и для вызова предиката. ЛОКАЛЬНОЕ-ИМЯ-МОДУЛЯ используется в теле модуля как эквивалент ИМЯ-МОДУЛЯ (АРГУМЕНТЫ).
ОПИСАНИЕ-ГЛОБАЛЬНЫХ-ПЕРЕМЕННЫХ::=
ОПИСАНИЕ-ПЕРЕМЕННЫХ | ОПИСАНИЕ-ПЕРЕМЕННЫХ-С-ИНИЦИАЛИЗАЦИЕЙ
Глобальные переменные обычно определяют внешние параметры задачи. В нижеследующих определениях предикатов эти переменные считаются аргументами. Они используются в теле предиката, но не упоминаются в заголовке.
ОПИСАНИЕ-ПЕРЕМЕННЫХ::=
ИЗОБРАЖЕНИЕ-ТИПА-ПЕРЕМЕННОЙ ИМЯ-ПЕРЕМЕННОЙ (, ИМЯ-ПЕРЕМЕННОЙ)*
ОПИСАНИЕ-ПЕРЕМЕННЫХ-С-ИНИЦИАЛИЗАЦИЕЙ::=
ИЗОБРАЖЕНИЕ-ТИПА-ПЕРЕМЕННОЙ ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ
(, ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ)*
ОПРЕДЕЛЕНИЕ-ПЕРЕМЕННОЙ::= ИМЯ-ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ |
ИМЯ-ПЕРЕМЕННОЙ
Тип выражения должен быть совместим с типом переменой, которой присваивается значение переменной.
Модуль определяет совокупность имен и обозначаемых ими объектов: предикатов, типов, переменных, полей структур, конструкторов и распознавателей объединений, процессов, классов и сообщений. Объекты, представленные описаниями модуля, определяют область глобальных имен. Каждое описание предиката определяет автономную систему локализации имен: параметров, меток и локальных переменных. В описании предиката одно имя не может использоваться для двух разных объектов. Если глобальное имя используется в определении предиката, то это имя не может определяться в качестве имени метки, локальной переменной или параметра.
Следующей областью локализации являются конструкции: изображение подтипа, определение массива, элемент агрегата вида “итерация выражений”. Переменные, определенные в каждой из этих конструкций, локализованы в конструкции и недоступны вне нее. Класс также определяет независимую область локализации. Поля класса доступны префиксацией объекта класса (см. разд. 6.6).
Исполнение программы начинается исполнением предиката с именем main. Рекомендован предикат со следующими параметрами: main(seq(string)argv: int ret_code). Параметр argv поставляет массив входных аргументов при исполнении программы. Параметру ret_code присваивается значение кода выхода.
Для вывода информации используется оператор print, аргументы которого - выражения и массивы.
Дата публикования: 2014-11-18; Прочитано: 410 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!