ГОСТ 27975-88 сторінка 3 з 11
в СРЕДЕ 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.
-
Вызовы ситуаций
-
{Вызов-ситуации служит для того, чтобы возбудить ситуацию и таким образом вызвать процедуру, назначенную для реагирования на эту ситуацию в текущем окружении, Вызов-ситуации может обеспечивать параметры для этой процедуры. Процедура реакции ищется, начиная с текущего окружения, по всем окружениям со старшими областями действия, исключая тот случай, когда во время исполнения некоторого вызова-ситуации вновь возбуждается та же самая ситуация. В последнем случае внутренний вызов-ситуации не использует процедуру реакции, найденную для внешнего вызова-ситуации, и поиск процедуры реакции продолжается с окружения, область действия которого является следующей старшей после области действия окружения с участком, содержащим первую процедуру реакции. В некоторых языках программирования подобный процесс называется распространением ситуации.}
Побачили розбіжність з офіційним текстом?
Дивіться також
Сборник ГОСТ ЕСКД
Збірник із 154 стандартів