в СРЕДЕ 1 с новым {пустым СЛОЕМ}

с новыми 7ОПИСАНИЯМИ1 7ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ {d},

знак конец модуля ОФОРМЛЕННЫЙ {94 d};

определяющее СЛОЙ подключение в СРЕДЕ1 передающее 7СВЯЗИ {36b},

знак начало модуля ОФОРМЛЕННЫЙ {94d},

модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕ с СЛОЕМ с новыми 7ОПИСАНИЯМИ1 7ОПИСАНИЯМИ ПОДКЛЮЧЕНИЕМ {d},

знак конец модуля ОФОРМЛЕННЫЙ {94d},

если (СЛОЙ) есть (новые 7ОПИСАНИЯ2 7ПОДКЛЮЧЕНИЯ).

  1. модульный кортеж с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕЗ {с}:

модульное вступление с 7ОПИСАНИЯМИ без 7ОПИСАНИЙ1 в СРЕДЕЗ {е},

возможное модульное заключение в СРЕДЕЗ {f}.

  1. модульное вступление с 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 е}.

  1. модульное заключение в СРЕДЕ {d}:

знак сброс модуля ОФОРМЛЕННЫЙ {94 d},

кортеж с ПУСТО сильно выдающий пустое значение в СРЕДЕЗ {32b}.

g)* текст модуля:

определяющий СЛОЙ текст модуля в СРЕДЕ передающий [СВЯЗИ {с}.

{Примеры:

  1. модуль а = мд строк s; чит (s);

откр строк t =”файл” + s, откр вещ а дм, b =подкл а мд откр файл f;

открыть (f, t, стандканал ввода);

сброс закрыть (f) дм.

  1. а = мд строк s; чит (s);

откр строк t =”файл” + s, откр вещ а дм, b = подкл а мд откр файл f;

открыть (f, t, стандканал ввода);

сброс закрыть (f) дм.

  1. мд строк s; чит (s);

откр строк t =”файл” + s, откр вещ а дм;

подкл а мд откр файл f;

открыть (f, t, стандканал ввода);

сброс закрыть (f) дм.

  1. строк s; чит (s) : откр строк t =”файл” + s, откр вещ а;

откр файл f; открыть (f, t, стандканал ввода);

сброс закрыть (f).

  1. строк s; чит (s); откр строк t =”файл” + s, откр вещ а;

откр файл f: открыть (f, t, стандканал ввода).

  1. сброс закрыть (f).}.

{Правило b гарантирует, что с каждым текстоМ-модуля, подключае­мым в любом заданном месте программы, связывается единственный 'КЛЮЧ'. Это используется для того, чтобы обеспечить возможность иден­тификации (7.2.1.а) 'КЛЮЧА для запуска' в средах всех наследных конст­руктов любого подключающего-предложения или текста-модуля, которые запускают этот текст-модуля.

Вообще говоря, определяющий-СЛОЙ-текст-модуля-передающий- ЇСВЯЗИ Т делает 'СЛОЙ' видимым внутри самого Т и делает свойства, отк­рываемые'[СВЯЗЯМИ'.видимыми всюду, где подключается Т. 'СЛОЙ' включает в себя как 7ОПИСАНИЯ, соответствующие его открытым описаниям (например, t и а в первом тексте-модуля из примера с и '7ОПИСАНИЯ1', соответствующие его скрытым описаниям (например, s в лом же примере), гак и 'ПОДКЛЮЧЕНИЕ', связывающее Т с единственным соответствующим ему 'КЛЮЧОМ' и означающее, что в данной среде теперь известно о наличии запуска этого Т.

'1СВЯЗИ' всегда открывают ’?ОПИСАНИЯ 7Г1ОДКЛЮЧЕНИЯ ПОДК­ЛЮЧЕНИЕ' (но не 7ОПИСАНИЯ1), где 7ПОДКЛЮЧЕНИЯ' означают за­пуск любых других модулей, подключаемых Т, если их вызовы-модулей внутри Т содержат знак-открытое.}

  1. Семантика

  1. ,,Модуль” - это сцена {2.1.1.1 .d}, состоящая из текста-модуля вмес­те с окружением {2.1.1.1. с}.

  2. Описание-модулей D исполняется следующим образом:

  • совместно исполняются составляющие тексты-модулей этого D;

Для каждого составляющего определения-модуля D1 из D,

  • выдача {с} текста-модуля этого D1 приписывается {4.8.2.а} опре- деляющему-индикатору-модуля этого D1.

  1. Выдача текста-модуля Т в окружении Е — это модуль, состоящий из (і) Т и

  1. окружения, необходимого для {7.2.2.с} Т в Е.

  1. Модульное-вступление С в окружении Е исполняется следующим образом:

• в Е исполняется его основа или описание;

Если его прямым наследником является другое модульное-вступле­ние D, го D исполняется в Е

{; в противном случае исполнение С завершено]-.

  1. Ситуации и реакции

{Ситуация — это такое состояние, обнаруживаемое реализацией или программой пользователя, при котором требуется действие, зависящее от текущего окружения. Это действие представляет собой вызов некоторой процедуры. Определение-ситуации вводит новый тип ситуации и задает вид процедуры, которую нужно вызывать для этой ситуации. Определение-реак- ции задает конкретную процедуру, которая должна использоваться для этой ситуации на время жизни текущего окружения, исключая производные окружения, которые могут задавать свои процедуры для той же ситуации. Определяющий-идентификатор-реакции некоторого определения-реакции рассматривается как использующий-идентификатор-ситуации, который ♦ должен идентифицировать определяющий-идентификатор-ситуации из соот­ветствующего определения-ситуации. Использующих-идентификаторов- реакции не существует.}

  1. Синтаксис

  1. описание ситуаций с видом ПРОЦЕДУРА через .'ОПИСАНИЯ в СРЕ­

ДЕ {41а}:

знак СИТУАЦИЯ {94F} , групповое определение ситуаций с видом ПРОЦЕДУРА через 1ОПИСАНИЯ в СРЕДЕ {41 b, cj .

в) определение ситуации с видом ПРОЦЕДУРА через СЛОВО для ситуа­ции с видом ПРОЦЕДУРА в СРЕДЕ {41с}: определяющий СЛОВО

идентификатор в СРЕДЕ выдающий ситуацию с видом ПРОЦЕДУРА {48а}.

  1. описание реакций через [ОПИСАНИЯ в СРЕДЕ {41 а}:

знак РЕАКЦИЯ £94 f} , групповое определение реакций через [ОПИСАНИЯ в СРЕДЕ {41 Ь, с}.

  1. определение реакции через СЛОВО для реакции с видом ПРОЦЕДУ­РА в СРЕДЕ {41с}:

если СЛОВО для ситуации с видом ПРОЦЕДУРА идентифицировано в среде {72а},

определяющий СЛОВО идентификатор в СРЕДЕ выдающий реакцию с видом ПРОЦЕДУРА {48а}, знак двоеточие {94f}, источник ви­да ПРОЦЕДУРА в СРЕДЕ {521с}.

{Примеры:

  1. ситуация (вещ) пуст недопустимый аргумент

  2. (вещ) пуст недопустимый аргумент с)присит недопустимый аргумент: (вещ х) пуст: финиш ^недопустимый аргумент: (вещ х) пуст: финиш}

  1. Семантика

  • ) исполнение описания-ситуаций {не требует действий, не выдает зна­чения и тем самым} завершено.

  • ) описание-реакций D в окружении Е исполняется следующим обра­зом:

  • совместно исполняются составляющие источники из D в Е; для каждого составляющего определения-реакции D1 из D

  • пусть V есть выдача источника из D1:

  • пусть X есть выдача использующего-идентификатора-ситуации, подоб­ного определяющему-идентификатору-реакции из D1 в Е;

  • V начинает реагировать на X внутри участка из Е.

  1. ОСНОВЫ

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

  1. Синтаксис

А) ОСНОВА {32d} : : приведенное присваивание {521 а}; приведенное отношение одноименности {522а}; приведенный текст процедуры {541а, Ь}; переход {544а}; пропуск {552а}; ТРЕТИЧНОЕ {В};

формальная заготовка;

виртуальная заготовка.

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

D) ПЕРВИЧНОЕ {С 532а, 543а} : : приведенная вырезка {532а}; приведенный вызов {551а}; приведенный вызов ситуации {545а};

приведенное изображаемое {80а}; приведенное ядро {551а}, приведенный текст формата {А341а}; приведенный использующий СЛОВО идентификатор {48 Ь};

ЗАКРЫТОЕ предложение <3 la, 33а, с, d, е, 34а, 35а}.

Гиперправило а соответствует ГОСТ 27974.

  1. Основы, связанные с именами

    1. Присваивания.

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

      2. Семантика.

Гиперправило а соответствует ГОСТ 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 начинает именовать массив, составленный из

  1. паспорта значения W,

  2. вариантов {4.4.2.с} некоторого {, возможно скрытого,} элемента значения V;

  • Nснабжается подыменами {2.1.3.l.g};

Для каждого индекса I, выбирающего элемент в W,

  • этот элемент присваивается подымени, выбираемому по I в N;

Остальные случаи {, например, если 'ВИД' есть 'ПРОСТОЕ' или некото­рый 'ПРЕДСТАВИТЕЛЬ'}:

  • N начинает именовать {2.1.3.2а} W.

  1. Отношения одноименности определены в ГОСТ 27974.

  2. Генераторы определены в ГОСТ 27974.

  3. Псевдоимена соответствуют ГОСТ 27974.

  1. Основы, связанные с составными значения- м и

    1. Выборки

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

      2. Семантика.

ВыдачаЛУ выборки S определяется следующим образом:

  • пусть V будет выдачей ВТОРИЧНОГО выборки S;

  • требуется, чтобы V {, если оно имя,} не было псевдоименем, причем восстанавливающим действием служит вызов процедуры восстановле­ние после ошибки псевдоимени {10.2.5.1};

  • W — значение, выбираемое в {2.1.3.3а,е, 2.1.3.4.к}, или имя, генери­руемое из {2.1.3.4.1} V по указателю-поля этого S.

  1. Вырезки

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

    2. Семантика.

  1. выдача 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п).

  1. Гиперправило соответствует ГОСТ 27974.

  1. Основы, связанные с процедурами

    1. Тексты процедур соответствуют ГОСТ 27974.

    2. Формулы соответствуют ГОСТ 27974.

    3. Вызовы определены в ГОСТ 27974.

    4. Переходы определены в ГОСТ 27974.

    5. Вызовы ситуаций

{Вызов-ситуации служит для того, чтобы возбудить ситуацию и таким образом вызвать процедуру, назначенную для реагирования на эту ситуа­цию в текущем окружении, Вызов-ситуации может обеспечивать параметры для этой процедуры. Процедура реакции ищется, начиная с текущего окружения, по всем окружениям со старшими областями действия, исклю­чая тот случай, когда во время исполнения некоторого вызова-ситуации вновь возбуждается та же самая ситуация. В последнем случае внутренний вызов-ситуации не использует процедуру реакции, найденную для внешнего вызова-ситуации, и поиск процедуры реакции продолжается с окружения, область действия которого является следующей старшей после области действия окружения с участком, содержащим первую процедуру реакции. В некоторых языках программирования подобный процесс называется распространением ситуации.}