Vi, ... , Vm, взятые в их порядке, служат полями W;
Случай В: 'СОСТАВНОЕ' есть вектор из ВИДА1':
W состоит из
і) паспорта ((1,ш)),
іі) V,, ... ,Vm;
Для і = 1, ... , т
Vj элемент, выбираемый по индексу (і) в W;
Случай С: СОСТАВНОЕ есть вектор МАССИВОВ из ВИДА2'.
требуется, чтобы паспорта значений V), ... , Vm были идентичны;
пусть паспортом {.например,} V будет ((Li.Uj), .. . , (Ln, un));
W состоит из
паспорта ((l,m), (Li,Ui), ... , (Ln,un));
элементов этих V], ... , Vm;
Для і — 1, ... , m
• элементом, выбираемым по индексу (і, ii, . . . , іп) в W будет элемент, выбираемый по (ii, ... , in) в Vj.
Если не все паспорта значений Vj, ... , Vm идентичны, восстанавливающим действием является следующее:
пусть U есть некоторый массив вида, специфицируемого описателем [ ] массив-{10.2.3.1.а.}с паспортом ((1,ш)) и такой, что для i =
= 1, ... , m, элементом, выбираемым по индексу (і) в U, является некоторый массив с паспортом, идентичным паспорту V,:
• вызывается процедура восстановление после ошибки записи массива -С 10.2-5.k3- со значениями {параметров} U и п {,где п есть число пар в паспорте Vj}.
Выбирающие предложения определены в ГОСТ 27974.
Циклические предложения определены в ГОСТ 27974.
П о д к л ю ч а ю щ и е предложения
Синтаксис
подключающее предложение ПРИВОДИМОЕ в СРЕДЕ {5D, 551а, A341h, А349а}:
определяющее СЛОИ подключение в СРЕДЕ передающее
ПУСТО {Ь}, ЗАКРЫТОЕ предложение в СРЕДЕ с СЛОЕМ ПРИВОДИМОЕ {а, 31а, 33а, с, d, е, 34а, 35а,-}.
определяющее новые 7ОПИСАНИЯ 7ПОДКЛЮЧЕНИЯ подключение в СРЕДЕ передающее 7СВЯЗИ {а, 49с}: знак подключить {94d}, открывающий 1СВЯЗИ групповой вызов модулей в СРЕДЕ передающий 7СВЯЗИ {с}, если 7ОПИСАНИЯ ПОДКЛЮЧЕНИЯ открываются СВЯЗЯМИ {е, f} и в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ из ПОДКЛЮЧЕНИЙ {h}.
открывающий !СВЯЗИ групповой вызов модулей в СРЕДЕ передающий 7СВЯЗИ {Ь, с}:
открывающий !СВЯЗИ вызов модуля в СРЕДЕ передающий 7СВЯЗИ {d,-};
если (7СВЯЗИ) есть (7СВЯЗИ1 7СВЯЗИ2) и (’СВЯЗИ) есть (1СВЯЗИ1 1СВЯЗИ2),
открывающий ’СВЯЗИ 1 вызов модуля в СРЕДЕ передающий 7СВЯЗИ1 {d,-}, знак а также {94f}, открывающий ІСВЯЗИ2 групповой вызов модулей в СРЕДЕ передающий 7СВЯЗИ2 {с}.
открывающий ЇСВЯЗИ вызов модуля в СРЕДЕ передающий 7СВЯЗИ {с}:
если (7СВЯЗИ) есть (ПУСТО), использующий ИНДИКАНТ индикатор модуля в СРЕДЕ выдающий !СВЯЗИ с модулями {48b};
если (7СВЯЗИ) есть (!СВЯЗИ), знак открытое {94d}.
использующий ИНДИКАНТ индикатор модуля в СРЕДЕ выдающий ІСВЯЗИ с модулями {48b}.
ЕСЛИ 7ОПИСАНИЯ1 7ОПИСАНИЯ2 ПОДКЛЮЧЕНИЯ!?
ПОДКЛЮЧЕНИЯ2
открываются
КЛЮЧОМ для открытия 7ОПИСАНИЙ1 ПОДКЛЮЧЕНИЙ! ?СВЯЗЯМИЗ
КЛЮЧОМ для открытия 7ОПИСАНИЙ1 ПОДКЛЮЧЕНИЙ!
7СВЯЗЯМИ4 {b, e,f }:
ЕСЛИ 7ОПИСАНИЯ1 7ОПИСАНИЯ2 ПОДКЛЮЧЕНИЯ 1
? ПОДКЛЮЧЕНИЯ2
открываются
КЛЮЧОМ для открытия 7ОПИСАНИЙ1 ПОДКЛЮЧЕНИЙ! 7СВЯЗЯМИЗ 7СВЯЗЯМИ4 {е, fl.
ЕСЛИ 7ОПИСАНИЯ1 7ОПИСАНИЯ2 ПОДКЛЮЧЕНИЯ 1
? ПОДКЛЮЧЕНИЯ}
открываются
КЛЮЧОМ для открытия 7ОПИСАНИЙ1 ПОДКЛЮЧЕНИЙ!
7СВЯЗЯМИ2 {b, е, f}:
ЕСЛИ 7ОПИСАНИЯ2 7ПОДКЛЮЧЕНИЯ2 открываются 7СВЯЗЯМИ2 и 7ОПИСАНИЯ1 не зависят от 7ОПИСАНИЙ2 {71а, Ь, с}.
ЕСЛИ ПУСТО открывается ПУСТО Се, fl: ЕСЛИ истина.
ЕСЛИ в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ1 из ?
ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ С bl:
если неверно, что ПОДКЛЮЧЕНИЕ идентифицировано в
СРЕДЕ {72а},
ЕСЛИ (7ПОДКЛЮЧЕНИЯ1) есть (7ПОДКЛЮЧЕНИЯ2 ПОДКЛЮЧЕНИЕ) и в СРЕДУ {с} ПОДКЛЮЧЕНИЕМ проникают 7ПОДКЛЮЧЕНИЯ2 из 7ПОДКЛЮЧЕНИЙ {h,i,-}; если ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ {72а}, ЕСЛИ в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ1 из ?
ПОДКЛЮЧЕНИЙ {h, і,-.}.
ЕСЛИ в СРЕДУ проникает ПУСТО из ПУСТО {h}: ЕСЛИ истина.
{Примеры:
подкл а, b (ввод (f, а); печ (а))
подкл а, b
а, b
а. откр Ь}
{В правиле b КЛЮЧИ для запуска', заложенные в {ПОДКЛЮЧЕНИЯ', представляют те модули, запуск которых может потребоваться при любом вызове-модуля, использующий-индикатор-модуля которого идентифицирует конкретный определяющий-индикатор-модуля, в то время, как подобные гиперпонятия, заложенные в 7ПОДКЛЮЧЕНИЯ', представляют только те модули, которые нужно запускать в конкретном контексте, для остальных же это уже было исполнено, как можно статически определить по СРЕДЕ'. Наличие 7ПОДКЛЮЧЕНИЙ' в средах всех наследных конструктов подключающего-предложения гарантирует, что все запущенные к данному моменту модули никогда не будут заново запускаться внутри этих наследников.
Правило f обеспечивает независимость одновременно открываемых описаний, так, например,
модуль а = мд откр вещ хдм, Ь=мдоткрвещ хдм;
подкл а, b (х)
не порождается. Тем не менее, правило е допускает, чтобы данное описание открывалось двумя открытыми подключениями одного и того же модуля, как в -
модуль а =мд откр вещ х дм;
модуль b = подкл откр а мд вещ у дм;
с = подкл откр а мд вещ z дм;
подкл b с (х + у + z)
где определения-модуля и для b и для с открывают х посредством откр а в своих составляющих подключениях. J-
Семантика:
а) подключающее-предложение-ПРИВОДИМОЕ-в-СРЕДЕ N в окружении Е исполняется следующим образом:
Если, согласно 'СРЕДЕ', существует „первый незапущенный” {Ь} модуль М из подключения R этого N в Е, то
пусть М состоит из определяющего-новые-?ПАРЫ-ПОДКЛЮЧЕНИЕ- текста-модуля Т {вместе с необходимым окружением};
М запускается {с} в Е, развертывая новое окружение Е4 {внутри которого участок 'ПОДКЛЮЧЕНИЕ' подключает результат запуска М};
пусть Y — это выдача {а} в Е4 подключающего-предложения-ПРИВО- ДИМОГО-в-СРЕДЕ- {с} -ПОДКЛЮЧЕНИЕМ, подобного N {, в котором относительно М известно, что он уже запущен};
{М отключается, т. е.} кортеж составляющего заключения из Т, если такой вообще есть, исполняется в Е4;
выдача N в Е есть Y;
требуется, чтобы Y по области действия было не младше Е;
в противном случае
пусть Е2 — это окружение, устанавливаемое вокруг и наравне с Е в соответствии с R ; участок этого Е2 соответствует передаваемым свойствам модулей, подключаемых R};
Е2 пополняется” {d} {значениями, передаваемыми составляющими вызовами-модулей} из R в Е;
выдача Nb Е есть выдача ЗАКРЫТОГСРпредложения этого Nb Е2;
„Первый незапущенный” согласно некоторой 'СРЕДЕ' модуль из подключения R в окружении Е определяется следующим образом:
Если существует некоторый составляющий открывающий-?СВЯЗИ-КЛІЦЧ-для открытия-?СВЯЗЕЙ-ПОДКЛЮЧЕНИЕ-вызов-модуля С из R, такой, что выполняется предикат если неверно что ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ/ и который текстуально является первым таким вызовом модуля, то
• пусть выдача использующего-индикатора-модуля этого С в Е есть {еще не запущенный} модуль М, состоящий из текста-модуля Т и окружения Е1 {необходимого (7.2.2.с) дляТ}; Если Т содержит подключение S
и если согласно 'СРЕДЕ' существует первый незапущенный модуль Ml из S в Е1,
то Ml есть первый незапущенный модуль из R;
иначе М есть первый незапущенный модуль из R;
иначе не имеется никакого первого незапущенного модуля из R.
{ Выбор С среди вызовов-модулей из R зависит только от 'СРЕДЫ' и не зависит от Е. Из этого следует, что такой выбор всегда можно осуществить во время трансляции. Е требуется только для того, чтобы получить правильное окружение, необходимое для М.}
Модуль, состоящий из определяющего-новые-?ПАРЫ-ПОДКЛЮЧЕ- НИЕ-текста-модуля Т и окружения Е1 {, необходимого для Т}, запускается в окружении Е следующим образом:
Если Т содержит {уже запущенное} подключение S то
пусть Е2 есть окружение, устанавливаемое вокруг Е1, наравне с Е, согласно S;
участок этого Е2 „дополняется” {d} {значениями, передаваемыми наследными вызовами-модулей,} из S в Е;
иначе, пусть Е2 есть Е1;
пусть ЕЗ есть окружение, устанавливаемое вокруг Е2 и, если Е — это „окружение расположения модуля”, то наравне с Е, а иначе по Е, согласно Т { ; участок этого ЕЗ соответствует всем свойствам (передаваемым или нет), описанным в Т};
'ПОДКЛЮЧЕНИЕ' получает доступ к модулю, состоящему из Т и ЕЗ внутри участка этого ЕЗ { , так что внутри самого Т будет видно, что Т уже запущен};
в ЕЗ исполняется составляющее модульное-вступление из Т;
пусть Е4 есть окружение, называемое „окружением расположения модуля”, устанавливаемое вокруг Е, наравне с ЕЗ, согласно некоторому определяющему-новое-ПОДКЛЮЧЕНИЕ-ПОНЯТИЮ;
'ПОДКЛЮЧЕНИЕ' получает доступ к модулю, состоящему из Т и ЕЗ внутри участка этого Е4;
запуск М называется „развертывающим” окружение Е4.
{Все окружения, создаваемые в процессе запуска незапущенных модулей (Ь) из подключения некоторого подключающего-предложения N, имеют одну и ту же область действия, младшую, чем у окружения, в котором будем исполняться N, но старшую, чем у любого окружения, создаваемого в процессе исполнения ЗАКРЫТОГО-предпожения этого N.}
Участок L „дополняется” из подключения R в окружении Е следующим образом:
Для каждого наследного использующего-индикатора-модуля-выдающего- !СВЯЗИ-с-модулями этого R,
Для каждого ’КЛЮЧА для открытия [ПАР', заложенного {1.1.4.1.с} в 'СВЯЗИ',
• пу<;ть модуль, „подключаемый” {е} 'КЛЮЧОМ для запуска внутри Е {, он будет находиться в некотором окружении расположения модуля (с),} есть {уже запущенный} модуль, состоящий из текста-модуля Т и окружения ЕЗ {, в котором до этого было исполнено его модульное- вступление};
Для каждого значения или сцены, подключаемых внутри участка этого ЕЗ посредством некоторой 'ПАРЫ',
Если эта 'ПАРА' заложена в '!ПАРЫ' {, 'ПАРА'должна быть передаваемой},
то 'ПАРА' получает доступ к этому значению или сцене (если она еще не имеет такого доступа) также внутри L.
Значение или сцена, „подключаемые” 'ПАРОЙ' внутри окружения Е состоящего из участка L и окружения Е1, есть значение или сцена, доступная через 'ПАРУ' внутри L {2.1.2.с.}, если L соответствует 7ПАРАМ', в которые заложена {1.1.4.1.с.} эта 'ПАРА', а иначе значение или сцена, доступная через 'ПАРУ' внутри Е1.
ОПИСАНИЯ, ОПИСАТЕЛИ И ИНДИКАТОРЫ
Все прагматические замечания соответствуют ГОСТ 27974.
4.1.Описания
1. Синтаксис
А) ОБЪЕКТ : : вид; приоритет; тождество для ПРОВИДА; переменная как имя ПРОВИДА; операция как ПРОВИД; ПАРАМЕТР; поле вида ВИД среди ПОЛЕЙ; модуль;
Ситуация с видом ПРОЦЕДУРА; реакция.
{ПРОВИД : : процедура; ВИД}
Гиперправила a, b, с, d соответствуют ГОСТ 27974.
е) описание с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в среде {49е}:
если (7ОПИСАНИЯ без 7ОПИСАНИЙ1) если (ПУСТО без [ОПИСАНИЙ!),
описание ОБЪЕКТОВ через [ОПИСАНИЯ 1 в СРЕДЕ {42а, 43а, 44а, е, 45а, 49а,-};
если (7ОПИСАНИЯ без 7ОПИСАНИЙ1) есть ([ОПИСАНИЯ без ПУСТО)
знак открытое {94d},
описание ОБЪЕКТОВ через [ОПИСАНИЯ в СРЕДЕ {42а, 43а, 44а, е, 45а, 49а,-};
если (7ОПИСАНИЯ без 7ОПЙСАНИЙ1) есть (7ОПИСАНИЯ без [ОПИСАНИЙІ 7ОПИСАНИЯ2),
описание ОБЪЕКТОВ через .'ОПИСАНИЯ! в СРЕДЕ {42а, 43а, 44а, е, 45а, 49а,-},
знак а также {94f},
описание с 70ПИСАНИЯМИ без 7ОПИСАНИЙ2 в СРЕДЕ {е};
если (’ОПИСАНИЯ без ’ОПИСАНИЙ!) есть
^ОПИСАНИЯ 7ОПИСАНИЯЗ без 7ОПИСАНИЙ1),
знак открытое {94f},
описание ОБЪЕКТОВ через ЇОПИСАНИЯ в СРЕДЕ {42а, 43а, 44а, е, 45а, 49а,-},
знак а также {94f },
описание с 7ОПИСАНИЯМИЗ без 7ОПИСАНИЙ1 в СРЕДЕ {е}.
{Модули могут запускаться подключающими-предложениями.}
2. Семантика соответствует ГОСТ 27974.
Описания видов соответствуют ГОСТ 27974.
Описания приоритетов соответствуют ГОСТ 27974.
Описания идентификаторов соответствуют ГОСТ 27974.
Описания операций соответствуют ГОСТ 27974.
Огшсатели определены в ГОСТ 27974.
Соотношения между видами определены в ГОСТ 27974.
Индикаторы и указатели полей
Синтаксис
А) ИНДИКАТОР : : идентификатор; индикатор вида; обозначение операции; индикатор модуля.
Метаправила В, С, D соответствуют ГОСТ 27974.
ПАРА : : ОПИСАНИЕ; МЕТКА; ПОЛЕ; ПОДКЛЮЧЕНИЕ.
{ПАРА : : ОБОЗНАЧЕНИЕ для ПРИЗНАКА.}
ПРИЗНАК : ; ВИД; ЗНАЧЕНИЕ НОМЕР; БИНАРНОЕ; метка; выборка ВИДА; !СВЯЗИ с модулями; запуск; СИТУАЦИЯ с видом ПРОЦЕДУРА.
ОБОЗНАЧЕНИЕ : : СЛОВО; ИНДИКАНТ; ИНФИКС; ПРЕФИКС; КЛЮЧ.
Гиперправила a, b, с, d, е, f соответствуют ГОСТ 27974.
Семантика определена ГОСТ 27974.
О пи сани я модулей
Синтаксис
описание модулей через !МОДУЛИ в СРЕДЕ1 {41а, е}:
знак модуль {94d},
групповое определение модулей через ЇМОДУЛИ в СРЕДЕ1 {41b, с}.
определение модуля через ИНДИКАНТ для 7СВЯЗЕЙ СВЯЗИ с модулями в СРЕДЕ 1 {41с}:
если (СВЯЗЬ) есть (КЛЮЧ для открытия 7ОПИСАНИЙ 7ПОДК- ЛЮЧЕНИЙ {и} КЛЮЧ для запуска)
и (ИНДИКАНТ) есть (выделенное СЛОВО),
если (СРЕДА1) есть (ПОНЯТИЕ! КЛЮЧ для запуска 7ПОНЯТИЕ2),
9- 136
fесли неверно что (ПОНЯТИЕ1 7ПОНЯТИЕ2) содержит (КЛЮЧ для запуска), определяющий ИНДИКАНТ индикатор модуля в СРЕДЕ1 выдающий 7СВЯЗИ СВЯЗЬ с модулями -[48а}-, знак определяется как {94 d}, определяющий СЛОЙ текст модуля в СРЕДЕ1
передающий 7СВЯЗИ СВЯЗЬ {с,-}.
определяющий новые 7ОПИСАНИЯ1 7ОПИСАНИЯ ПОДКЛЮЧЕНИЕ текст модуля в СРЕДЕ 1 передающий 7СВЯЗИ
КЛЮЧ для открытия 7ОПИСАНИЙ 7ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ {Ь}:
если (7ПОДКЛЮЧЕНИЯ) есть (ПУСТО) и (7СВЯЗИ) есть (ПУСТО),
знак начало модуля ОФОРМЛЕННЫЙ {944}-, модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1