в СРЕДЕ 1 с новым {пустым СЛОЕМ}
с новыми 7ОПИСАНИЯМИ1 7ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ {d},
знак конец модуля ОФОРМЛЕННЫЙ {94 d};
определяющее СЛОЙ подключение в СРЕДЕ1 передающее 7СВЯЗИ {36b},
знак начало модуля ОФОРМЛЕННЫЙ {94d},
модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕ с СЛОЕМ с новыми 7ОПИСАНИЯМИ1 7ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ {d},
знак конец модуля ОФОРМЛЕННЫЙ {94d},
если (СЛОЙ) есть (новые 7ОПИСАНИЯ2 7ПОДКЛЮЧЕНИЯ).
модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕЗ {с}:
модульное вступление с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕЗ {е},
возможное модульное заключение в СРЕДЕЗ {f}.
модульное вступление с 7ОПИСАНИЯМИ1 без 7ОПИСАНИЙ2 в СРЕДЕЗ {d, е}:
основа в СРЕДЕЗ сильно выдающая пустое значение {32 d}, знак продолжать {94f}, модульное вступление с 7ОПИСАНИЯМИ1 без 7ОПИСАНИЙ2 в СРЕДЕЗ {е}:
если (7ОПИСАНИЯ1 без 7ОПИСАНИЙ2) есть
(7ОПИСАНИЯЗ 7ОПИСАНИЯ4 без 7ОПИСАНИЙ5 7ОПИСА- НИЙ6),
описание с 7ОПИСАНИЯМИЗ без 7ОПИСАНИЙ 5 в СРЕДЕ {41е}, знак продолжать {94 f}, модульное вступление с 7ОПИСАНИЯМИ4 без 7ОПИСАНИЙ 6 в
СРЕДЕЗ {е};
если (7ОПИСАНИЯ1 без 7ОПИСАНИЙ2) есть (ПУСТО) без (ПУСТО),
основа в СРЕДЕЗ сильно выдающая пустое значение {32d};
описание с 7ОПИСАНИЯМИ1 без 7ОПИСАНИЙ 2 в СРЕДЕЗ {41 е}.
модульное заключение в СРЕДЕ {d}:
знак сброс модуля ОФОРМЛЕННЫЙ {94 d},
кортеж с ПУСТО сильно выдающий пустое значение в СРЕДЕЗ {32b}.
g)* текст модуля:
определяющий СЛОЙ текст модуля в СРЕДЕ передающий [СВЯЗИ {с}.
{Примеры:
модуль а = мд строк s; чит (s);
откр строк t =”файл” + s, откр вещ а дм, b =подкл а мд откр файл f;
открыть (f, t, стандканал ввода);
сброс закрыть (f) дм.
а = мд строк s; чит (s);
откр строк t =”файл” + s, откр вещ а дм, b = подкл а мд откр файл f;
открыть (f, t, стандканал ввода);
сброс закрыть (f) дм.
мд строк s; чит (s);
откр строк t =”файл” + s, откр вещ а дм;
подкл а мд откр файл f;
открыть (f, t, стандканал ввода);
сброс закрыть (f) дм.
строк s; чит (s) : откр строк t =”файл” + s, откр вещ а;
откр файл f; открыть (f, t, стандканал ввода);
сброс закрыть (f).
строк s; чит (s); откр строк t =”файл” + s, откр вещ а;
откр файл f: открыть (f, t, стандканал ввода).
сброс закрыть (f).}.
{Правило b гарантирует, что с каждым текстоМ-модуля, подключаемым в любом заданном месте программы, связывается единственный 'КЛЮЧ'. Это используется для того, чтобы обеспечить возможность идентификации (7.2.1.а) 'КЛЮЧА для запуска' в средах всех наследных конструктов любого подключающего-предложения или текста-модуля, которые запускают этот текст-модуля.
Вообще говоря, определяющий-СЛОЙ-текст-модуля-передающий- ЇСВЯЗИ Т делает 'СЛОЙ' видимым внутри самого Т и делает свойства, открываемые'[СВЯЗЯМИ'.видимыми всюду, где подключается Т. 'СЛОЙ' включает в себя как 7ОПИСАНИЯ, соответствующие его открытым описаниям (например, t и а в первом тексте-модуля из примера с и '7ОПИСАНИЯ1', соответствующие его скрытым описаниям (например, s в лом же примере), гак и 'ПОДКЛЮЧЕНИЕ', связывающее Т с единственным соответствующим ему 'КЛЮЧОМ' и означающее, что в данной среде теперь известно о наличии запуска этого Т.
'1СВЯЗИ' всегда открывают ’?ОПИСАНИЯ 7Г1ОДКЛЮЧЕНИЯ ПОДКЛЮЧЕНИЕ' (но не 7ОПИСАНИЯ1), где 7ПОДКЛЮЧЕНИЯ' означают запуск любых других модулей, подключаемых Т, если их вызовы-модулей внутри Т содержат знак-открытое.}
Семантика
,,Модуль” - это сцена {2.1.1.1 .d}, состоящая из текста-модуля вместе с окружением {2.1.1.1. с}.
Описание-модулей D исполняется следующим образом:
совместно исполняются составляющие тексты-модулей этого D;
Для каждого составляющего определения-модуля D1 из D,
выдача {с} текста-модуля этого D1 приписывается {4.8.2.а} опре- деляющему-индикатору-модуля этого D1.
Выдача текста-модуля Т в окружении Е — это модуль, состоящий из (і) Т и
окружения, необходимого для {7.2.2.с} Т в Е.
Модульное-вступление С в окружении Е исполняется следующим образом:
• в Е исполняется его основа или описание;
Если его прямым наследником является другое модульное-вступление D, го D исполняется в Е
{; в противном случае исполнение С завершено]-.
Ситуации и реакции
{Ситуация — это такое состояние, обнаруживаемое реализацией или программой пользователя, при котором требуется действие, зависящее от текущего окружения. Это действие представляет собой вызов некоторой процедуры. Определение-ситуации вводит новый тип ситуации и задает вид процедуры, которую нужно вызывать для этой ситуации. Определение-реак- ции задает конкретную процедуру, которая должна использоваться для этой ситуации на время жизни текущего окружения, исключая производные окружения, которые могут задавать свои процедуры для той же ситуации. Определяющий-идентификатор-реакции некоторого определения-реакции рассматривается как использующий-идентификатор-ситуации, который ♦ должен идентифицировать определяющий-идентификатор-ситуации из соответствующего определения-ситуации. Использующих-идентификаторов- реакции не существует.}
Синтаксис
описание ситуаций с видом ПРОЦЕДУРА через .'ОПИСАНИЯ в СРЕ
ДЕ {41а}:
знак СИТУАЦИЯ {94F} , групповое определение ситуаций с видом ПРОЦЕДУРА через 1ОПИСАНИЯ в СРЕДЕ {41 b, cj .
в) определение ситуации с видом ПРОЦЕДУРА через СЛОВО для ситуации с видом ПРОЦЕДУРА в СРЕДЕ {41с}: определяющий СЛОВО
идентификатор в СРЕДЕ выдающий ситуацию с видом ПРОЦЕДУРА {48а}.
описание реакций через [ОПИСАНИЯ в СРЕДЕ {41 а}:
знак РЕАКЦИЯ £94 f} , групповое определение реакций через [ОПИСАНИЯ в СРЕДЕ {41 Ь, с}.
определение реакции через СЛОВО для реакции с видом ПРОЦЕДУРА в СРЕДЕ {41с}:
если СЛОВО для ситуации с видом ПРОЦЕДУРА идентифицировано в среде {72а},
определяющий СЛОВО идентификатор в СРЕДЕ выдающий реакцию с видом ПРОЦЕДУРА {48а}, знак двоеточие {94f}, источник вида ПРОЦЕДУРА в СРЕДЕ {521с}.
{Примеры:
ситуация (вещ) пуст недопустимый аргумент
(вещ) пуст недопустимый аргумент с)присит недопустимый аргумент: (вещ х) пуст: финиш ^недопустимый аргумент: (вещ х) пуст: финиш}
Семантика
) исполнение описания-ситуаций {не требует действий, не выдает значения и тем самым} завершено.
) описание-реакций D в окружении Е исполняется следующим образом:
совместно исполняются составляющие источники из D в Е; для каждого составляющего определения-реакции D1 из D
пусть V есть выдача источника из D1:
пусть X есть выдача использующего-идентификатора-ситуации, подобного определяющему-идентификатору-реакции из D1 в Е;
V начинает реагировать на X внутри участка из Е.
ОСНОВЫ
Все прагматические замечания соответствуют ГОСТ 27974.
Синтаксис
А) ОСНОВА {32d} : : приведенное присваивание {521 а}; приведенное отношение одноименности {522а}; приведенный текст процедуры {541а, Ь}; переход {544а}; пропуск {552а}; ТРЕТИЧНОЕ {В};
формальная заготовка;
виртуальная заготовка.
Метаправила В, С соответствуют ГОСТ 27974.
D) ПЕРВИЧНОЕ {С 532а, 543а} : : приведенная вырезка {532а}; приведенный вызов {551а}; приведенный вызов ситуации {545а};
приведенное изображаемое {80а}; приведенное ядро {551а}, приведенный текст формата {А341а}; приведенный использующий СЛОВО идентификатор {48 Ь};
ЗАКРЫТОЕ предложение <3 la, 33а, с, d, е, 34а, 35а}.
Гиперправило а соответствует ГОСТ 27974.
Основы, связанные с именами
Присваивания.
Синтаксисопределен в ГОСТ 27974.
Семантика.
Гиперправило а соответствует ГОСТ 27974.
Ь) значение W „присваивается” имени N, видом которого является некоторое 'ИМЯ ВИДА', следующим образом:
Требуется, чтобы
N не было псевдоименем и
W по области действия не было младше N;
Если N есть псевдоимя, то восстанавливающим действием служит вызов процедуры восстановление после ошибки псевдоимени {10.2.5.1};
Если W по области действия младше N, то восстанавливающим действием служит вызов процедуры восстановление после ошибки области действия {1О.2.5.П1};
Случай А: 'ВИД' есть структура содержащая !ПОЛЯ в себе':
Для каждого 'СЛОВА , выбирающего поле в W,
это поле присваивается подымени, выбираемому по 'СЛОВУ' в N;
Случай В: 'ВИД' есть 'МАССИВ из ВИДА1':
пусть V — {старое} значение, именуемое N;
требуется, чтобы паспорта W и V были идентичны;
Для каждого индекса I, выбирающего элемент в W,
этот элемент присваивается подымени, выбираемому по I в N;
Если дескрипторы W и V не идентичны, восстанавливающим действием является следующее:
пусть п есть число пар в паспорте W;
пусть і есть некоторое целое число, такое, что 1 < і < п и пары с номером і в паспортах W и V не совпадают;
вызывается процедура восстановление после ошибки присваивания {10.2.5.11} со значениями {параметров} N, W, п, і;
Случай С: ВИД' есть 'подвижный МАССИВ из ВИДА1':
пусть V — {старое} значение, именуемое N;
N начинает именовать массив, составленный из
паспорта значения W,
вариантов {4.4.2.с} некоторого {, возможно скрытого,} элемента значения V;
Nснабжается подыменами {2.1.3.l.g};
Для каждого индекса I, выбирающего элемент в W,
этот элемент присваивается подымени, выбираемому по I в N;
Остальные случаи {, например, если 'ВИД' есть 'ПРОСТОЕ' или некоторый 'ПРЕДСТАВИТЕЛЬ'}:
N начинает именовать {2.1.3.2а} W.
Отношения одноименности определены в ГОСТ 27974.
Генераторы определены в ГОСТ 27974.
Псевдоимена соответствуют ГОСТ 27974.
Основы, связанные с составными значения- м и
Выборки
Синтаксис соответствует ГОСТ 27974.
Семантика.
ВыдачаЛУ выборки S определяется следующим образом:
пусть V будет выдачей ВТОРИЧНОГО выборки S;
требуется, чтобы V {, если оно имя,} не было псевдоименем, причем восстанавливающим действием служит вызов процедуры восстановление после ошибки псевдоимени {10.2.5.1};
W — значение, выбираемое в {2.1.3.3а,е, 2.1.3.4.к}, или имя, генерируемое из {2.1.3.4.1} V по указателю-поля этого S.
Вырезки
Синтаксис соответствует ГОСТ 27974.
Семантика.
выдача W вырезки S определяется посредством следующих шагов: Шаг 1 :
пусть V и (її , . .. , In) — {совместные} выдачи ПЕРВИЧНОГО вырезки S и индексатора {Ь} из S;
требуется, чтобы V {, если оно имя,} не было псевдоименем, восстанавливающим действием служит вызов процедуры восстановление после ошибки псевдоимени {10.2.5.1};
пусть ((ri, Si), . . . , (Th, Sn)) — паспорт выдачи V или значения, именуемого V;
Шаг 2: для 1 = 1, ... , п
случай A: Ij — целое число:
требуется, чтобы и < Ij < Sj;
случай В: Ij — тройка (1, и, Ґ):
пусть L будет г;, если 1 отсутствует, и 1 в противном случае;
пусть U будет Sj, если и отсутствует, и и в противном случае;
требуется, чтобы гj < L и U < Sf,
І; заменяется на (L, U, 1').
Восстанавливающее действие для этого шага состоит в следующем:
пусть і и b - некоторые числа, такие, что 1 < і < п и либо случай Al : Ij - целое число, I; < г; или Ij > Sj и b = Ij, либо случай Bl : Ij — тройка (1, и, 1'), возможно, измененная на предыдущих шагах, 1 не отсутствует, 1 < г и b =1, либо случай В2: Ij - тройка (1,и,1'), возможно, измененная на предыдущих шагах,
не отсутствует, и > Sj и b =и;
пусть R есть процедура восстановление после ошибки границы имени {10.2.5.j}, если V имя, и процедура восстановление после ошибки границы {10.2.5.І} в противном случае:
пусть Ь' — выдача вызова со значениями {параметров} V, п, і и Ь
.для случая А1 : Ij заменяется на Ь';
для случая Bl : 1 из Ij заменяется на Ь';
для случая В2: и из I, заменяется на b';
шаг 2 выполняется сначала.
Шаг 3: для і = 1, ... , п, если I, — тройка (1, u, 1 ),
пусть D будет 0, если 1' отсутствует, и 1 1’ в противном случае; {D —
это число, которое следует вычесть из 1, для того чтобы получить сдвинутую нижнюю границу; }
Г заменяется на D.
Шаг 4: W — значение, выбираемое в {2.1.3.4.a.g, і}, или имя,генерируемое из {2.1.3.4.j} V по (її, ... , 1п).
Гиперправило соответствует ГОСТ 27974.
Основы, связанные с процедурами
Тексты процедур соответствуют ГОСТ 27974.
Формулы соответствуют ГОСТ 27974.
Вызовы определены в ГОСТ 27974.
Переходы определены в ГОСТ 27974.
Вызовы ситуаций
{Вызов-ситуации служит для того, чтобы возбудить ситуацию и таким образом вызвать процедуру, назначенную для реагирования на эту ситуацию в текущем окружении, Вызов-ситуации может обеспечивать параметры для этой процедуры. Процедура реакции ищется, начиная с текущего окружения, по всем окружениям со старшими областями действия, исключая тот случай, когда во время исполнения некоторого вызова-ситуации вновь возбуждается та же самая ситуация. В последнем случае внутренний вызов-ситуации не использует процедуру реакции, найденную для внешнего вызова-ситуации, и поиск процедуры реакции продолжается с окружения, область действия которого является следующей старшей после области действия окружения с участком, содержащим первую процедуру реакции. В некоторых языках программирования подобный процесс называется распространением ситуации.}