• Vi, ... , Vm, взятые в их порядке, служат полями W;

Случай В: 'СОСТАВНОЕ' есть вектор из ВИДА1':

  • W состоит из

  • і) паспорта ((1,ш)),

  • іі) V,, ... ,Vm;

Для і = 1, ... , т

  • Vj элемент, выбираемый по индексу (і) в W;

Случай С: СОСТАВНОЕ есть вектор МАССИВОВ из ВИДА2'.

  • требуется, чтобы паспорта значений V), ... , Vm были идентичны;

  • пусть паспортом {.например,} V будет ((Li.Uj), .. . , (Ln, un));

  • W состоит из

  1. паспорта ((l,m), (Li,Ui), ... , (Ln,un));

  2. элементов этих 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}.

  1. Выбирающие предложения определены в ГОСТ 27974.

  2. Циклические предложения определены в ГОСТ 27974.

  3. П о д к л ю ч а ю щ и е предложения

    1. Синтаксис

  1. подключающее предложение ПРИВОДИМОЕ в СРЕДЕ {5D, 551а, A341h, А349а}:

определяющее СЛОИ подключение в СРЕДЕ передающее

ПУСТО {Ь}, ЗАКРЫТОЕ предложение в СРЕДЕ с СЛОЕМ ПРИВОДИМОЕ {а, 31а, 33а, с, d, е, 34а, 35а,-}.

  1. определяющее новые 7ОПИСАНИЯ 7ПОДКЛЮЧЕНИЯ подключение в СРЕДЕ передающее 7СВЯЗИ {а, 49с}: знак подключить {94d}, открывающий 1СВЯЗИ групповой вызов модулей в СРЕДЕ пере­дающий 7СВЯЗИ {с}, если 7ОПИСАНИЯ ПОДКЛЮЧЕНИЯ открываются СВЯЗЯМИ {е, f} и в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ из ПОДКЛЮЧЕНИЙ {h}.

  2. открывающий !СВЯЗИ групповой вызов модулей в СРЕДЕ передаю­щий 7СВЯЗИ {Ь, с}:

открывающий !СВЯЗИ вызов модуля в СРЕДЕ передающий 7СВЯЗИ {d,-};

если (7СВЯЗИ) есть (7СВЯЗИ1 7СВЯЗИ2) и (’СВЯЗИ) есть (1СВЯЗИ1 1СВЯЗИ2),

открывающий ’СВЯЗИ 1 вызов модуля в СРЕДЕ передающий 7СВЯЗИ1 {d,-}, знак а также {94f}, открывающий ІСВЯЗИ2 групповой вызов модулей в СРЕДЕ передающий 7СВЯЗИ2 {с}.

  1. открывающий ЇСВЯЗИ вызов модуля в СРЕДЕ передающий 7СВЯЗИ {с}:

если (7СВЯЗИ) есть (ПУСТО), использующий ИНДИКАНТ индикатор модуля в СРЕДЕ выдающий !СВЯЗИ с модулями {48b};

если (7СВЯЗИ) есть (!СВЯЗИ), знак открытое {94d}.

использующий ИНДИКАНТ индикатор модуля в СРЕДЕ выдающий ІСВЯЗИ с модулями {48b}.

  1. ЕСЛИ 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.

  1. ЕСЛИ 7ОПИСАНИЯ1 7ОПИСАНИЯ2 ПОДКЛЮЧЕНИЯ 1

? ПОДКЛЮЧЕНИЯ}

открываются

КЛЮЧОМ для открытия 7ОПИСАНИЙ1 ПОДКЛЮЧЕНИЙ!

7СВЯЗЯМИ2 {b, е, f}:

ЕСЛИ 7ОПИСАНИЯ2 7ПОДКЛЮЧЕНИЯ2 открываются 7СВЯЗЯМИ2 и 7ОПИСАНИЯ1 не зависят от 7ОПИСАНИЙ2 {71а, Ь, с}.

  1. ЕСЛИ ПУСТО открывается ПУСТО Се, fl: ЕСЛИ истина.

  2. ЕСЛИ в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ1 из ?

ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ С bl:

если неверно, что ПОДКЛЮЧЕНИЕ идентифицировано в

СРЕДЕ {72а},

ЕСЛИ (7ПОДКЛЮЧЕНИЯ1) есть (7ПОДКЛЮЧЕНИЯ2 ПОДКЛЮЧЕНИЕ) и в СРЕДУ {с} ПОДКЛЮЧЕНИЕМ проникают 7ПОДКЛЮЧЕНИЯ2 из 7ПОДКЛЮЧЕНИЙ {h,i,-}; если ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ {72а}, ЕСЛИ в СРЕДУ проникают 7ПОДКЛЮЧЕНИЯ1 из ?

ПОДКЛЮЧЕНИЙ {h, і,-.}.

  1. ЕСЛИ в СРЕДУ проникает ПУСТО из ПУСТО {h}: ЕСЛИ истина.

{Примеры:

  1. подкл а, b (ввод (f, а); печ (а))

  2. подкл а, b

  3. а, b

  4. а. откр Ь}

{В правиле b КЛЮЧИ для запуска', заложенные в {ПОДКЛЮЧЕНИЯ', представляют те модули, запуск которых может потребоваться при любом вызове-модуля, использующий-индикатор-модуля которого идентифици­рует конкретный определяющий-индикатор-модуля, в то время, как подоб­ные гиперпонятия, заложенные в 7ПОДКЛЮЧЕНИЯ', представляют только те модули, которые нужно запускать в конкретном контексте, для осталь­ных же это уже было исполнено, как можно статически определить по СРЕДЕ'. Наличие 7ПОДКЛЮЧЕНИЙ' в средах всех наследных конструк­тов подключающего-предложения гарантирует, что все запущенные к дан­ному моменту модули никогда не будут заново запускаться внутри этих наследников.

Правило f обеспечивает независимость одновременно открываемых описаний, так, например,

модуль а = мд откр вещ хдм, Ь=мдоткрвещ хдм;

подкл а, b (х)

не порождается. Тем не менее, правило е допускает, чтобы данное описа­ние открывалось двумя открытыми подключениями одного и того же мо­дуля, как в -

модуль а =мд откр вещ х дм;

модуль b = подкл откр а мд вещ у дм;

с = подкл откр а мд вещ z дм;

подкл b с (х + у + z)

где определения-модуля и для b и для с открывают х посредством откр а в своих составляющих подключениях. J-

  1. Семантика:

а) подключающее-предложение-ПРИВОДИМОЕ-в-СРЕДЕ N в окружении Е исполняется следующим образом:

Если, согласно 'СРЕДЕ', существует „первый незапущенный” {Ь} модуль М из подключения R этого N в Е, то

  • пусть М состоит из определяющего-новые-?ПАРЫ-ПОДКЛЮЧЕНИЕ- текста-модуля Т {вместе с необходимым окружением};

  • М запускается {с} в Е, развертывая новое окружение Е4 {внутри ко­торого участок 'ПОДКЛЮЧЕНИЕ' подключает результат запуска М};

  • пусть Y — это выдача {а} в Е4 подключающего-предложения-ПРИВО- ДИМОГО-в-СРЕДЕ- {с} -ПОДКЛЮЧЕНИЕМ, подобного N {, в кото­ром относительно М известно, что он уже запущен};

  • {М отключается, т. е.} кортеж составляющего заключения из Т, если такой вообще есть, исполняется в Е4;

  • выдача N в Е есть Y;

  • требуется, чтобы Y по области действия было не младше Е;

в противном случае

  • пусть Е2 — это окружение, устанавливаемое вокруг и наравне с Е в соответствии с R ; участок этого Е2 соответствует передаваемым свой­ствам модулей, подключаемых R};

  • Е2 пополняется” {d} {значениями, передаваемыми составляющими вызовами-модулей} из R в Е;

  • выдача Nb Е есть выдача ЗАКРЫТОГСРпредложения этого Nb Е2;

  1. „Первый незапущенный” согласно некоторой 'СРЕДЕ' модуль из подключения R в окружении Е определяется следующим образом:

Если существует некоторый составляющий открывающий-?СВЯЗИ-КЛІЦЧ-для открытия-?СВЯЗЕЙ-ПОДКЛЮЧЕНИЕ-вызов-модуля С из R, такой, что выполняется предикат если неверно что ПОДКЛЮЧЕНИЕ идентифицировано в СРЕДЕ/ и который текстуально является первым таким вызовом модуля, то

• пусть выдача использующего-индикатора-модуля этого С в Е есть {еще не запущенный} модуль М, состоящий из текста-модуля Т и окружения Е1 {необходимого (7.2.2.с) дляТ}; Если Т содержит подк­лючение S

и если согласно 'СРЕДЕ' существует первый незапущенный модуль Ml из S в Е1,

то Ml есть первый незапущенный модуль из R;

иначе М есть первый незапущенный модуль из R;

иначе не имеется никакого первого незапущенного модуля из R.

{ Выбор С среди вызовов-модулей из R зависит только от 'СРЕДЫ' и не зависит от Е. Из этого следует, что такой выбор всегда можно осуществить во время трансляции. Е требуется только для того, чтобы получить пра­вильное окружение, необходимое для М.}

  1. Модуль, состоящий из определяющего-новые-?ПАРЫ-ПОДКЛЮЧЕ- НИЕ-текста-модуля Т и окружения Е1 {, необходимого для Т}, запускает­ся в окружении Е следующим образом:

Если Т содержит {уже запущенное} подключение S то

  • пусть Е2 есть окружение, устанавливаемое вокруг Е1, наравне с Е, согласно S;

  • участок этого Е2 „дополняется” {d} {значениями, передаваемыми наследными вызовами-модулей,} из S в Е;

иначе, пусть Е2 есть Е1;

  • пусть ЕЗ есть окружение, устанавливаемое вокруг Е2 и, если Е — это „окружение расположения модуля”, то наравне с Е, а иначе по Е, сог­ласно Т { ; участок этого ЕЗ соответствует всем свойствам (передавае­мым или нет), описанным в Т};

  • 'ПОДКЛЮЧЕНИЕ' получает доступ к модулю, состоящему из Т и ЕЗ внутри участка этого ЕЗ { , так что внутри самого Т будет видно, что Т уже запущен};

  • в ЕЗ исполняется составляющее модульное-вступление из Т;

  • пусть Е4 есть окружение, называемое „окружением расположения мо­дуля”, устанавливаемое вокруг Е, наравне с ЕЗ, согласно некоторому определяющему-новое-ПОДКЛЮЧЕНИЕ-ПОНЯТИЮ;

  • 'ПОДКЛЮЧЕНИЕ' получает доступ к модулю, состоящему из Т и ЕЗ внутри участка этого Е4;

  • запуск М называется „развертывающим” окружение Е4.

{Все окружения, создаваемые в процессе запуска незапущенных моду­лей (Ь) из подключения некоторого подключающего-предложения N, имеют одну и ту же область действия, младшую, чем у окружения, в кото­ром будем исполняться N, но старшую, чем у любого окружения, создавае­мого в процессе исполнения ЗАКРЫТОГО-предпожения этого N.}

  1. Участок L „дополняется” из подключения R в окружении Е следую­щим образом:

Для каждого наследного использующего-индикатора-модуля-выдающего- !СВЯЗИ-с-модулями этого R,

Для каждого ’КЛЮЧА для открытия [ПАР', заложенного {1.1.4.1.с} в 'СВЯЗИ',

• пу<;ть модуль, „подключаемый” {е} 'КЛЮЧОМ для запуска внутри Е {, он будет находиться в некотором окружении расположения модуля (с),} есть {уже запущенный} модуль, состоящий из текста-модуля Т и окружения ЕЗ {, в котором до этого было исполнено его модульное- вступление};

Для каждого значения или сцены, подключаемых внутри участка этого ЕЗ посредством некоторой 'ПАРЫ',

Если эта 'ПАРА' заложена в '!ПАРЫ' {, 'ПАРА'должна быть переда­ваемой},

то 'ПАРА' получает доступ к этому значению или сцене (если она еще не имеет такого доступа) также внутри L.

  1. Значение или сцена, „подключаемые” 'ПАРОЙ' внутри окружения Е состоящего из участка L и окружения Е1, есть значение или сцена, доступ­ная через 'ПАРУ' внутри L {2.1.2.с.}, если L соответствует 7ПАРАМ', в ко­торые заложена {1.1.4.1.с.} эта 'ПАРА', а иначе значение или сцена, доступ­ная через 'ПАРУ' внутри Е1.

  1. ОПИСАНИЯ, ОПИСАТЕЛИ И ИНДИКАТОРЫ

Все прагматические замечания соответствуют ГОСТ 27974.

4.1.Описания

  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 в СРЕДЕ {е}.

{Модули могут запускаться подключающими-предложениями.}

  1. 2. Семантика соответствует ГОСТ 27974.

  2. Описания видов соответствуют ГОСТ 27974.

  3. Описания приоритетов соответствуют ГОСТ 27974.

  4. Описания идентификаторов соответствуют ГОСТ 27974.

  5. Описания операций соответствуют ГОСТ 27974.

  6. Огшсатели определены в ГОСТ 27974.

  7. Соотношения между видами определены в ГОСТ 27974.

  8. Индикаторы и указатели полей

    1. Синтаксис

А) ИНДИКАТОР : : идентификатор; индикатор вида; обозначение операции; индикатор модуля.

Метаправила В, С, D соответствуют ГОСТ 27974.

  1. ПАРА : : ОПИСАНИЕ; МЕТКА; ПОЛЕ; ПОДКЛЮЧЕНИЕ.

{ПАРА : : ОБОЗНАЧЕНИЕ для ПРИЗНАКА.}

  1. ПРИЗНАК : ; ВИД; ЗНАЧЕНИЕ НОМЕР; БИНАРНОЕ; метка; выборка ВИДА; !СВЯЗИ с модулями; запуск; СИТУАЦИЯ с видом ПРОЦЕДУРА.

  2. ОБОЗНАЧЕНИЕ : : СЛОВО; ИНДИКАНТ; ИНФИКС; ПРЕФИКС; КЛЮЧ.

Гиперправила a, b, с, d, е, f соответствуют ГОСТ 27974.

    1. Семантика определена ГОСТ 27974.

  1. О пи сани я модулей

    1. Синтаксис

  1. описание модулей через !МОДУЛИ в СРЕДЕ1 {41а, е}:

знак модуль {94d},

групповое определение модулей через ЇМОДУЛИ в СРЕДЕ1 {41b, с}.

  1. определение модуля через ИНДИКАНТ для 7СВЯЗЕЙ СВЯЗИ с модулями в СРЕДЕ 1 {41с}:

если (СВЯЗЬ) есть (КЛЮЧ для открытия 7ОПИСАНИЙ 7ПОДК- ЛЮЧЕНИЙ {и} КЛЮЧ для запуска)

и (ИНДИКАНТ) есть (выделенное СЛОВО),

если (СРЕДА1) есть (ПОНЯТИЕ! КЛЮЧ для запуска 7ПОНЯТИЕ2),

9- 136

fесли неверно что (ПОНЯТИЕ1 7ПОНЯТИЕ2) содержит (КЛЮЧ для запуска), определяющий ИНДИКАНТ индикатор модуля в СРЕДЕ1 выдающий 7СВЯЗИ СВЯЗЬ с модулями -[48а}-, знак определяется как {94 d}, определяющий СЛОЙ текст модуля в СРЕДЕ1

передающий 7СВЯЗИ СВЯЗЬ {с,-}.

  1. определяющий новые 7ОПИСАНИЯ1 7ОПИСАНИЯ ПОДКЛЮЧЕНИЕ текст модуля в СРЕДЕ 1 передающий 7СВЯЗИ

КЛЮЧ для открытия 7ОПИСАНИЙ 7ПОДКЛЮЧЕНИЙ ПОДКЛЮЧЕНИЯ {Ь}:

если (7ПОДКЛЮЧЕНИЯ) есть (ПУСТО) и (7СВЯЗИ) есть (ПУСТО),

знак начало модуля ОФОРМЛЕННЫЙ {944}-, модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1